面试题41:和为S的连续正数序列

  题目:输出所有和为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     }
原文地址:https://www.cnblogs.com/yangrenzhi/p/5850135.html