题目:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
本题显然要进行穷举,因为是正整数,所以穷举范围从1开始,因为至少要两个数,所以到sum-1为止。 用一个辅助函数对每一个要穷举的数字进行检测,看是否存在序列和等于sum。若存在,则将该组数放进数组。
bool sequence(int n,int m,vector<int> &res)
{
int sum=0;
int i;
for(i=n;i<m;++i)
{
sum+=i;
if(sum==m )
{
for(int j=n;j<=i;j++)
res.push_back (j);
return true;
}
}
if(i>=m)
return false;
}
vector<vector<int> > FindContinuousSequence(int sum) {
vector<vector<int> > res;
for(int i=1;i<sum;++i)
{
vector<int> temp;
if(sequence (i,sum,temp))
res.push_back (temp);
}
return res;
}