输入一个正数 n,输出所有和为 n 连续正数序列。
来源:互联网 发布:荣耀盒子推荐软件 编辑:程序博客网 时间:2024/03/29 17:27
1、输入一个正数 n,输出所有和为 n 连续正数序列
例如输入 15,由于 1+2+3+4+5=4+5+6=7+8=15,所以输出 3 个连续序列 1-5、4-6 和 7-8。
分析:我们用两个数small和big分别表示序列的最小值和最大值。首先把small初始化为 1,big初始化为 2。如果从small到big的序列的和大于n的话,我们向右移动small,相当于从序列中去掉较小的数字。如果从small到big的序列的和小于n的话,我们向右移动big,相当于向序列中添加big的下一个数字。一直到small等于(1+n)/2,因为序列至少要有两个数字。
基于这个思路,我们可以写出如下代码:
#include "stdafx.h"#include <iostream>#include <stack>#include <assert.h>using namespace std;//打印连续序列void PrintSequence(int small,int big){for (int i=small;i<big;i++){cout<<i<<"-";}cout<<big<<endl;}//寻找和为n的连续序列void FindContinuesSequence(int n){int small=1;int big=2;int middle=(1+n)/2;int sum=small+big;while(small<middle){//sum==n,直接输出序列if(sum==n)PrintSequence(small,big);//sum>n,small向右移,直至sum<=nwhile(sum>n){sum-=small;small++;if(sum==n) PrintSequence(small,big);}//sum<n,big向右移big++;sum+=big;}}int main(){FindContinuesSequence(15); return 0;}
2、输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.。
使用回溯算法,代码如下:
#include "stdafx.h"#include "stdlib.h"#include <iostream.h>#include <string.h>#define N 1000int a[N]; //辅助数组,用来存储满足条件的组合int c=0, n=20, m=30; void work(int sum, int cc){//和等于m,递归终止,输出组合if(sum == m) { for(int i = 0; i < c; ++i)printf("%d ", a[i]);printf("\n");return;}//数列从1到n遍历一遍for(int i = cc; i <= n; ++i) {//和大于m,此次递归终止if(sum + i > m) return;//和小于m,继续递归if(sum + i <= m) {a[c++] = i;work(sum + i, i + 1);--c; //回溯控制}}}int main(){work(0, 1); //初始条件(和初始值为0,数列起始值为1)return 0;}
- 输入一个正数n,输出所有和为n连续正数序列。
- 输入一个正数n,输出所有和为n连续正数序列。
- 输入一个正数n,输出所有和为n 连续正数序列
- 输入一个正数 n,输出所有和为 n 的连续正数序列 [No. 25]
- 【每日面试题】输入一个正数n,输出所有和为n连续正数序列
- 输入一个正数n,输出所有和为n连续正数序列
- 输入一个正数 n,输出所有和为n 连续正数序列。
- 输入一个正数n,输出所有和为n连续正数序列。
- 输入一个正数 n,输出所有和为 n 连续正数序列。
- 输入一个正数n,输出所有和为n连续正数序列
- 输入一个正数n,输出所有和为n连续正数序列。
- 算法习题51:输入一个正数n,输出所有和为n连续正数序列
- 输入一个正数n,输出所有和为n 连续正数序列
- 输入一个正数n,输出所有和为n 连续正数序列
- 输入一个正数n,输出所有和为n的连续正数序列
- 【算法学习-01】 输入一个正数 n,输出所有和为 n 连续正数序列。
- 网易面试题 输入一个正数n,输出所有和为n连续正数序列
- 输入一个正数n,输出所有和为n连续正整数序列
- maven+spring+cxf编写web service
- A Problem in the BioHDF bioh5g_import_reads tool
- Android编程之SQLite补充
- 第四章 工作流引擎的设计与实现(五)
- MVC最佳实践资料汇集
- 输入一个正数 n,输出所有和为 n 连续正数序列。
- 自动打印android应用程序使用内存的脚本
- 黑马程序员-- 09对于javabean的操作
- vs2010 c# activex 开发
- Java基础加强之内省(introspector)
- 语音质量评价
- 程序猿基础
- linux 开启ftp和telnet服务
- 从FTP服务器下载文件