标签:mystra 编程算法 和为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
编程算法 - 和为s的连续正整数序列 代码(C),布布扣,bubuko.com
标签:mystra 编程算法 和为s的连续正整数序列 代码 c
原文地址:http://blog.csdn.net/caroline_wendy/article/details/37689501