劍指offer(41):和為s的連續正數序列
阿新 • • 發佈:2020-09-08
輸入一個整數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; }