数据结构——算法之(018)( 和为n连续正数序列)
2014-05-25 21:04
232 查看
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】
题目:
输入一个正数n,输出所有和为n连续正数序列
例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。
题目分析:
一、首先是连续的序列,则个数至少是2,假如输入的是15,则循环到中间就可以了,往后两个数字相机肯定会大于15
二、具体实现看代码,注释得很清楚了
算法实现:
题目:
输入一个正数n,输出所有和为n连续正数序列
例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。
题目分析:
一、首先是连续的序列,则个数至少是2,假如输入的是15,则循环到中间就可以了,往后两个数字相机肯定会大于15
二、具体实现看代码,注释得很清楚了
算法实现:
#include <stdio.h> void print(int start, int end) { printf(" [%d--%d]", start, end); } void get_continue_array(int n) { int start = 1; int end = 2; int mid = (n+1)/2; /*循环管的终点*/ int sum = start + end; while(start < mid) { if(sum < n) { /* ** 和不够,尾部右移,并叠加到@sum中 */ sum += ++end; } else if(sum > n) { /* ** 和超越了需要的值,说明@start和@end之间的序列 ** 不可能构成需要的值舍去头部值,头部右移 */ sum -= start++; } else { print(start, end); sum -= start++; } } } int main(int argc, char *argv[]) { int m = atoi(argv[1]); get_continue_array(m); return 0; }
相关文章推荐
- 数据结构——算法之(020)( 和为n连续正数序列)
- 数据结构——算法之(025)( 求一个数组的最长递减子序列)
- 【数据结构与算法】LCS(不连续)
- 一道算法面试题 -- 输出所有和为n连续正数序列
- 算法题目---和为s的两个数字vs和为s的连续正数序列
- 算法学习十三----和为n连续正数序列
- 【算法11】和为n的连续正数序列
- C语言 数据结构之连续存储数组的算法
- 数据结构与算法题目集(中文)——5-53 两个有序序列的中位数 (25分)——链表
- 每天一道算法题(12)——和为n的连续正数序列或者随机数
- 算法竞赛入门经典:第六章 数据结构基础 6.9 根据二叉树的后序和中序确定前序序列
- 【数据结构与算法】小于等于k的最大连续子序列和
- 数据结构——图常用算法实现(DFS,BFS,最小生成树,最短路径,拓扑序列)
- 程序员面试题精选100题(26)-和为n连续正数序列[算法]
- 【算法学习-01】 输入一个正数 n,输出所有和为 n 连续正数序列。
- 每天一道算法题(12)——和为n的连续正数序列或者随机数
- 算法系列——和为S的连续正数序列
- 程序员面试题精选100题(26)-和为n连续正数序列[算法]
- 【数据结构与算法】最大子序列
- 【数据结构与算法】最大子序列和问题的求解