博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《剑指offer》第五十七题(为s的连续正数序列)
阅读量:5236 次
发布时间:2019-06-14

本文共 1375 字,大约阅读时间需要 4 分钟。

// 面试题57(二):为s的连续正数序列// 题目:输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。// 例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列1~5、// 4~6和7~8。#include 
void PrintContinuousSequence(int small, int big);void FindContinuousSequence(int sum){ if (sum < 3) return; int small = 1; int big = 2; int middle = (1 + sum) / 2;//因为序列要求至少包含两个数字,所以最大不会超过(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++;//然后就会出现小于要求值的情况,就加上++big curSum += big; }}void PrintContinuousSequence(int small, int big)//打印序列{ for (int i = small; i <= big; ++i) printf("%d ", i); printf("\n");}// ====================测试代码====================void Test(const char* testName, int sum){ if (testName != nullptr) printf("%s for %d begins: \n", testName, sum); FindContinuousSequence(sum);}int main(int argc, char* argv[]){ Test("test1", 1); Test("test2", 3); Test("test3", 4); Test("test4", 9); Test("test5", 15); Test("test6", 100); system("pause"); return 0;}

 

转载于:https://www.cnblogs.com/CJT-blog/p/10544660.html

你可能感兴趣的文章
卷积神经网络总结
查看>>
C语言字符数组回顾
查看>>
Referring Relationships 代码阅读笔记
查看>>
微信小程序:开发之前要知道的三件事
查看>>
vue-echarts的使用及编译报错解决方法
查看>>
Apicloud——图片不适配屏幕解决方案
查看>>
在ionic这个框架下(Angular JS),对URL进行重写,过滤掉URL中的#号
查看>>
JSP学习
查看>>
sql语句查询出表里符合条件的第二条记录的方法
查看>>
破解IT运维成本困境,专业化分工是妙方
查看>>
sql中decode()重要函数使用
查看>>
小感叹
查看>>
【BZOJ-1340】Escape逃跑问题 最小割
查看>>
srl16e verilog
查看>>
XY8782S00 BL-W8782 BL-R8782MS1 SDIO接口 高性能、低功耗、体积小 wifi无线模块
查看>>
TL-WR703 USB不稳定/当前的总结
查看>>
[Android] 环境配置之基础开发环境(SDK/Android Studio)(转)
查看>>
ABP框架系列之二十五:(Embedded-Resource-Files-嵌入式资源文件)
查看>>
学习笔记:mysql
查看>>
前端面试送命题
查看>>