题目描述
原题地址:A1109 Group Photo
中文版:B1055 集体照
解题思路
对所有人逆序排序,先从最后一排开始排,每排完一排就输出。对于每一排,计算该排人数,并设置对应的左右指针,一边排一边移动指针,当指针达到边界,则该排完成,按指定格式输出结果。
易错点
if(i == 0) m = n - (n / k) * (k - 1);
- 最后一排人数
- 对于拍照的人(输出格式)来说,从中间开始,先排右边的人,再排左边的人。
r = m / 2; l = r - 1;
- 设置好左右指针位置,免去考虑第一个人是否重复赋值
- 一共 k 排,因此遍历范围正好为 [0, k)
也许陌生的知识点
sort(S, S + n, cmp);
- 排序函数,实现 [first, last) 范围内的排序,可以自定义排序策略 cmp 函数
- 不带 cmp 参数的 sort 函数实现从小到大排序
- 所需头文件: algorithm
代码示例:
1 |
|