题目
- 题目:输入一个正数n,输出所有和为n 连续正数序列。
例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,
所以输出3 个连续序列1-5、4-6 和7-8。
思路
- 对于固定的left.当前sum值小于目标Sum,则right一直后移
- sum==Sum。则输出序列,且将right后移
- 对于固定的right.,sum>Sum时,始终将left左移动
实现
|
|
简略写法:123456789101112131415void findSequence(const int& Sum) { int left =1, right = 1, sum = 1; while(left <= Sum/2) { while (sum > Sum) { sum -= left; left ++; } if (sum == Sum) { print(left, right); } right ++; sum += right; }}
拓展
- 题目:输入两个整数n和m,从数列1,2,3…n中随意取几个数,使其和等于m,要求列出所有的组合。
|
|