小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!

// test20.cpp : 定义控制台应用程序的入口点。
//

include "stdafx.h"

include

include

include

include

include

include

include<string.h>

include

using namespace std;

class Solution {
public:
vector<vector > FindContinuousSequence(int sum) {
int half = sum / 2 + 1;
int result = 0;
vector group;
vector<vector> vec;
for (int time = 1;time <= half;++time)
{
for (int num = time;num < sum;++num)
{
group.push_back(num);
result += num;
if (result == sum)
{
vec.push_back(group);
group.clear();
result = 0;
break;
}
else if(result>sum)
{
group.clear();
result = 0;
break;
}
else
{

}
}
}
return vec;
}
};
int main()
{

Solution so;
vector<vector> vec = so.FindContinuousSequence(1);

for (auto it = vec.begin();it != vec.end();++it)
{
for (auto num = it->begin();num != it->end();++num)
{
cout << *num << " ";
}
cout << endl;
}

cout << endl;
return 0;
}

posted @ 2016-11-03 17:43  wdan2016  阅读(1134)  评论(0)    收藏  举报