和为某一值的连续正序列
2015-08-04 21:59
375 查看
题目:输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列1~5、4~6和7~8
void print(int* nums, int left, int right) { for(int i= left; i<= right; ++i) { cout<<nums[i]<<","; } cout<<endl; } void FindAllNumsWithSum(int* nums, int start, int end, int k) { if(nums == NULL || end < 1 || k < 3) { return ; } int MiddleIndex =(start + end)/2; int MiddleData = nums[MiddleIndex]; if(MiddleData >= k) { end = MiddleIndex - 1; //FindNumsWithSum(nums, start, end, k); } else { int left = start; int right = end; int middle = (1 + k)/2; int CurSum = nums[left] + nums[right]; while(left < middle) { if(CurSum == k) { print(nums, left ,right); } while(CurSum > k && left < middle) { CurSum -=nums[left]; left++; if(CurSum == k) { print(nums, left, right); } } right++; CurSum += nums[right]; } } } int _tmain(int argc, _TCHAR* argv[]) { int Array[] = {1,2,4,7,11,15}; int len = sizeof(Array)/sizeof(int); int k = 15; FindNumsWithSum(Array, 0, len -1, k); getchar(); return 0; }
相关文章推荐
- Cocos2d-x android使用onKeyDown监听返回键实现二次返回退出
- FloodLight使用感受
- 图的深度遍历 (DFS)
- Python学习笔记转载一
- sql 中如何将A表的数据更新到B表中,数据表备份语句
- 什么是c++中的多态
- iOS设计模式 - 代理
- 谈谈@@IDENTITY 和 SCOPE_IDENTITY()的区别
- 6、C语言和设计模式(之模板模式)
- 关于Delay函数的思考
- HTTP协议基础解读
- Android 中在程序启动的时候自动检测网络状态(WiFi/手机网络)
- Oracle经典查询练手第四篇
- 黑马程序员——Java String类
- 我的创业日记 ----- 第19天
- !HDU 4359 左子树节点和小于右子树的树有多少种-dp
- 解决解析xml报UTFDataFormatException方案
- php的unset函数何时释放内存
- Objective-C id和instancetype
- leetcode excel表格列标题数字与字符串的转换