zoukankan      html  css  js  c++  java
  • 求和为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;
    }



  • 相关阅读:
    线程的休眠和中断
    线程的强制运行
    多线程基础
    jar文件につぃて
    Exception和RuntimeException
    异常的抛出
    java之适配器模式
    分支语句
    运算符与表达式
    练习课(一)
  • 原文地址:https://www.cnblogs.com/chhuach2005/p/3961693.html
Copyright © 2011-2022 走看看