您的位置:首页 > 其它

给一个正整数sum,打印出所有和为sum的连续正整数序列之和。

2017-09-24 11:24 113 查看
本题的思路为:首先我们用俩个指针,samll,big,当前和为small到big的和,如果当前和大于sum则,small++,如果当前和小于sum则big++;

代码:

vector<vector<int> > FindContinuousSequence(int sum) {
int big=2;
int small=1;
int curSum=small+big;
vector<vector<int>> result;
if(sum<3)
return result;
vector<int> data;
while(small<(sum+1)/2){
if(curSum==sum){
Iniatia(data,small,big);
result.push_back(data);
data.clear();
}
while(curSum>sum && small<(sum+1)/2){
curSum -= small;
small++;
if(curSum==sum){
Iniatia(data,small,big);
result.push_back(data);
data.clear();
}
}
big++;
curSum += big;
}
return result;
}
void Iniatia(vector<int> &data,int start,int end){
for(int i=start;i<=end;i++){
data.push_back(i);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐