标签:rgba oid info 指定 连续 连续序列 alt 情况 cout
思路:
1,利用左右指针的思想
2,因为至少要有两个数,所以最大值为:(1+sum) / 2;
3,指定起始序列为1,2
举个例子,sum=9的情况
实现
void findContinuousSequence(int sum){ if(sum < 3){ return; } int small = 1; int big = 2; int mid = (1 + sum) >> 1; while (small < mid && big <= mid){ int curSum = 0; for (int i = small; i <= big; ++i) { curSum += i; } if(curSum == sum){ for (int i = small; i <= big; ++i) { if(i == big){ cout<<i<<"="; } else{ cout<<i<<"+"; } } cout<<sum<<endl; big++; } else if(curSum < sum){// 序列小于指定值,big++ big++; } else{ small++; } } }
输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列1~5、4~6和7~8。
标签:rgba oid info 指定 连续 连续序列 alt 情况 cout
原文地址:https://www.cnblogs.com/dongma/p/13929253.html