程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 編程算法 - 和為s的連續正整數序列 代碼(C)

編程算法 - 和為s的連續正整數序列 代碼(C)

編輯:關於C語言

編程算法 - 和為s的連續正整數序列 代碼(C)


和為s的連續正整數序列 代碼(C)

 

 

題目: 輸入一個正數s, 打印出所有和為s的連續正數序列(至少含有兩個數).

 

起始於1, 2, 相加, 如果相等則返回, 如果小於, 則前端遞增右移, 如果大於, 則後端遞增右移, 一直到後端移動到s的一半位置.

因為兩個數, 小數為一半, 大數為一半加一, 則必然結束.

 

代碼:

 

/*
 * main.cpp
 *
 *  Created on: 2014.6.12
 *      Author: Spike
 */

/*eclipse cdt, gcc 4.8.1*/

#include 
#include 
#include 

void PrintContinuousSequence(int small, int big)
{
	for (int i=small; i<=big; ++i)
		printf(%d , i);
	printf(
);
}

void FindContinuousSequence(int sum) {
	if (sum<3)
		return;
	int small = 1;
	int big = 2;
	int middle = (1+sum)/2;
	int curSum = small+big;
	while (small < middle) {
		if (curSum == sum)
			PrintContinuousSequence(small, big);
		while (curSum > sum && small < middle) {
			curSum -= small;
			small++;
			if(curSum == sum)
				PrintContinuousSequence(small, big);
		}
		big++;
		curSum += big;
	}
}

int main(void)
{
	FindContinuousSequence(15);
	return 0;
}

輸出:

 

 

1 2 3 4 5 
4 5 6 
7 8 


 

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved