码迷,mamicode.com
首页 > 其他好文 > 详细

编程算法 - 和为s的连续正整数序列 代码(C)

时间:2014-07-12 23:33:56      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:mystra   编程算法   和为s的连续正整数序列   代码   c   

和为s的连续正整数序列 代码(C)


本文地址: http://blog.csdn.net/caroline_wendy


题目: 输入一个正数s, 打印出所有和为s的连续正数序列(至少含有两个数).


起始于1, 2, 相加, 如果相等则返回, 如果小于, 则前端递增右移, 如果大于, 则后端递增右移, 一直到后端移动到s的一半位置.

因为两个数, 小数为一半, 大数为一半加一, 则必然结束.


代码:

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

/*eclipse cdt, gcc 4.8.1*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

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

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 



bubuko.com,布布扣


编程算法 - 和为s的连续正整数序列 代码(C),布布扣,bubuko.com

编程算法 - 和为s的连续正整数序列 代码(C)

标签:mystra   编程算法   和为s的连续正整数序列   代码   c   

原文地址:http://blog.csdn.net/caroline_wendy/article/details/37689501

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!