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

来源:互联网 发布:数据库管理系统例子 编辑:程序博客网 时间:2024/06/05 05:28

和为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 





2 0
原创粉丝点击