和为S的连续正数序列
2016-08-07 11:38
127 查看
题目描述
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出描述:
输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
class Solution {
public:
vector<vector<int> > FindContinuousSequence(int sum)
{
vector<vector<int> >res;
if(sum<3)return res;
int small=1;
int big=2;
int mid=(sum+1)/2;
int cursum=small+big;
while(small<mid)
{
if(cursum==sum)
{
output(small,big,res);
big++;
cursum+=big;
}
else if(cursum<sum)
{
big++;
cursum=cursum+big;
}
else
{
cursum-=small;
small++;
}
}
return res;
}
void output(int small,int big,vector<vector<int> >&res)
{
vector<int> temp;
for(int i=small;i<=big;i++)
{
temp.push_back(i);
}
res.push_back(temp);
}
};
相关文章推荐
- 和为S的连续正数序列
- 输出所有和为S的连续正数序列
- 51.和为n连续正数序列(数组)。
- 求和为n连续正数序列 C++实现
- 【剑指offer】和为定值的连续正数序列
- 找逆序的对数&&和为n的两个数字&&和为n的连续正数序列
- 剑指offer面试题 和为s的两个数字 VS 和为s的连续正数序列
- 和为S的两个数字VS和为S的连续正数序列
- 41-所有和为s的连续正数序列/递增数列中和为s的两个数字
- 剑指offer——面试题41:和为s的两个数字VS和为s的连续正数序列
- 剑指offer--和为S的连续正数序列
- 剑指offer之面试题41和为s的两个数字VS和为s的连续正数序列
- 和为n连续正数序列
- 剑指offer 之 和为S的连续正数序列
- 和为s的两个数字VS和为s的连续正数序列
- 面试题41:和为s的两个数字 VS 和为s的连续正数序列
- 剑指offer:和为S的连续正数序列
- 和为S的连续正数序列
- 剑指offer——和为s的两个数字VS和为s的连续正数序列
- 剑指Offer----面试题41(2):和为s的连续正数序列