输入一个整数s,打印出所有何为s的连续正数序列(至少含有两个数)。 
/**
和为s的连续正整数序列
输入一个整数s,打印出所有何为s的连续正数序列(至少含有两个数)。 
*/
#include<iostream>
#include<vector>
using namespace std;
int main(){
    int N;
    
    while(cin>>N){
        int low = 1;
        int high = 2;
        int sum = low + high;
        int mid = (N+1)/2
        vector<vector<int> > result;
        vector<int> tmpresult;
        
        while(low<mid&&low<high){
            
            if(sum==N){
                for(int i=low;i<=high;i++){
                    tmpresult.push_back(i);
                }
                result.push_back(tmpresult);
                tmpresult.clear();
                high++;
                sum += high;//每次high+1,则sum值加上high值 
            }else if(sum<N){
                
                high++;
                sum += high;//每次high+1,则sum值加上high值 
            }else{
                sum -= low;//要先减去low值,low值再加 
                low++;
                
            }
        }
        //打印一个二维vector 
        for(vector<vector<int> >::iterator it = result.begin();it!=result.end();it++){
            for(int i=0;i<(*it).size();i++){
                cout<<(*it)[i]<<" ";
            }
            cout<<endl;
        } 
        
    }
    return 0;
} 

 

posted on 2020-09-07 22:11  曹婷婷  阅读(160)  评论(0)    收藏  举报