您的位置:首页 > 职场人生

面试题41-2:和为s的连续正数序列

2015-11-19 15:58 274 查看

题目描述

输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列1~5、4~6和7~8。

题目分析

剑指Offer(纪念版)P216

代码实现

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;
}
}

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

printf("\n");
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: