求和为s的连续正数序列
输入一个正数是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; }