1. 程式人生 > 實用技巧 >劍指offer(41):和為s的連續正數序列

劍指offer(41):和為s的連續正數序列

輸入一個整數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; }