输入一个正数是s,打印出所有和为s的连续正数序列(至少含有两个数)。例如输入15,由于1+2+3+4+5=4+5+6==7+8=15,所有结果打印出3个序列1-5,4-6,7-8.
代码如下:
void printsequence(int start,int end)
{
for (int i=start;i<=end;++i)
{
cout<<i<<" ";
}
cout<<endl;
}
void get_sequence(int sum)
{
if (sum<1)
{
return ;
}
int start =0;
int end=1;
int tmp_sum=start+end;
while(!(end-start==1&&tmp_sum>sum))//----------------------------------------注意逻辑
{
if (tmp_sum==sum)
{
printsequence(start,end);
++end;
tmp_sum+=end;
}
else if (tmp_sum>sum)
{
tmp_sum-=start;
++start;
}
else
{
++end;
tmp_sum+=end;
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
get_sequence(15);
int a[]={1,2,4,7,11,15};
get_pair_sum(a,sizeof(a)/sizeof(int),15);
system("pause");
return 0;
}