和为 n 的连续正整数序列
来源:互联网 发布:淘宝怎样才能排名靠前 编辑:程序博客网 时间:2024/05/17 04:03
1. 描述
输入一个正整数n,输出所有和为n的连续正整数序列。
例如输入15,输出4个序列:1 2 3 4 5,4 5 6, 7 8, 15
据说这是一道网易的面试题。
2. 思路
用start和end分别表示序列的起始和结束,sum为从start到end序列的和。end的值不大于(n+1)/2。开始时令sum = start = end = 0,判断sum的值是否等于n:
(1) 如果等于n,则打印从start到end之间的序列,并令sum += ++end;
(2) 如果sum 小于n,则令sum += ++end;
(3) 此时sum大于n,令sum -= start++;
代码如下:
void continuousSeqSum(int n){if (n <= 0)return ;int sum, start, end, i;sum = start = end = 1;while (end <= (n + 1) >> 1){if (sum == n){for (i = start; i <= end; i++) //打印结果printf("%d ", i);printf("\n");sum += ++end; } else if (sum < n){sum += ++end;} else {sum -= start++;}} //whileif (n > 1)printf("%d\n", n);}
测试如下:
#include <stdio.h>void continuousSeqSum(int n);int main(void){int n;printf("input n: ");scanf("%d", &n);continuousSeqSum(n);return 0;}
输出:
- 和为n的连续正整数序列
- 和为 n 的连续正整数序列
- 和为N的连续正整数序列
- 和为N的连续正整数序列
- 和为n连续正整数序列
- 找出所有和为n的连续正整数序列
- 打印和为N的连续正整数序列
- 和为sum的连续正整数序列
- 和为 s 的连续正整数序列
- 算法 - 求和为n的连续正整数序列(C++)
- python 求和为正整数n的连续整数序列
- 每日一道算法题:输出和为n的连续正整数序列
- 输入正整数,求出和为该正整数的全部连续正整数序列
- 和为n的连续正数序列
- 和为n的连续子序列
- 和为n的连续正数序列
- 和为n的连续自然数序列
- 【剑指offer】和为S的连续正整数序列
- 2012-08-20
- Unable to process JNDI URL .. 与 项目login无法访问
- SQL Prompt 4.0.3.12
- C++ 缺省参数
- LINUX设备驱动之设备模型五--device&driver&bus
- 和为 n 的连续正整数序列
- SICP第一章小结
- uva 10905 - Children's Game
- flash cs 的学习笔记
- 存储过程begin/end
- Android硬件抽象层(HAL)概要介绍和学习计划
- C++ 字符串操作经验集
- 各类Http请求状态(status)及其含义
- Android之Service与IntentService的比较