给一个正整数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);
}
}
代码:
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);
}
}
相关文章推荐
- 一个正整数有可能可以被表示为 m(m>=2) 个连续正整数之和,编写一个程序,输入一个正整数,然后找出符合这种要求的所有 连续正整数序列,若不存在这种序列,则打印None。
- 26.打印所有和为S的连续正整数序列[FindContinuousSequencesWithSumS]
- 一个正整数有可能可以表示为n(n>=2)个连续的正整数之和,如:15=1+2+3+4+5,15=4+5+6,15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。
- 网易笔试题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列。
- 网易笔试题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列。
- 输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列
- 编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列
- 输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列。
- 动态规划 解决打印所有和为s的连续整数序列 剑指offer 之 面试题41_2
- 输入一个正数s,打印出所有和为s的连续正数序列(至少包含两个数)
- 输入一个正数s,打印出所有和为s的连续正数序列(至少包含两个数),例如输入15,打印出连续3个序列1-5,4-6,7-8
- 二分法解决打印所有和为s的连续整数序列 剑指offer 之 面试题41_2
- 剑指Offer——输入正整数S,打印出所有和为S的连续正数序列(至少含有两个正数)
- 面试题41_2 输入一个正数s,打印所有和为s的连续正数序列(至少两个数)
- 打印所有和为s的连续正整数序列(至少含两个数)
- java实现输入一个正整数n,输出全部连续正整数相加后等于n的所有序列。
- 把一个包含n个正整数的序列划分成m个连续的子序列。设第i个序列的各数之和为S(i),求所有S(i)的最大值的最小值是多少?
- 输入一个正数n,输出所有和为n连续正整数序列
- 输入一个正数s,打印出所有和为s的连续正数序列
- 打印给定一个数组序列的所有的排列的类n皇后问题