题目:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
1 vector<vector<int> > FindContinuousSequence(int sum) { 2 vector<vector<int>> outputV; 3 4 if(sum<3) 5 return outputV; 6 int small=1,big=2; 7 int middle = (sum+1)/2; 8 int currentSum = small+big; 9 while(small<middle){ 10 if(currentSum==sum){ 11 vector<int> currentV; 12 for(int i=small;i<=big;i++){ 13 currentV.push_back(i); 14 } 15 outputV.push_back(currentV); 16 } 17 while(currentSum>sum&&small<middle){ 18 currentSum-=small;small++; 19 if(currentSum==sum){ 20 vector<int> currentV; 21 for(int i=small;i<=big;i++){ 22 currentV.push_back(i); 23 } 24 outputV.push_back(currentV); 25 } 26 27 } 28 big++; 29 currentSum+=big; 30 } 31 return outputV; 32 }