题目描述

原题来自:ZOJ 1937

已知一个数列 A0,A1,A2,A3,...,Am(其中A0=1,Am=n,A0<A1<A2<A3<...<Am )。对于每个 k,需要满足 Ak=Ai+Aj(0<=i,j<k这里 i 与 j 可以相等)。

现给定 n 的值,要求 m 的最小值(并不要求输出),及这个数列每一项的值(可能存在多个数列,只输出任一个满足条件的就可以了)。

输入格式

多组数据,每行给定一个正整数 n 。

输入以 0 结束。

输出格式

对于每组数据,输出满足条件的长度最小的数列。

样例
输入复制
5
7
12
15
77
0
输出复制
1 2 4 5
1 2 4 6 7
1 2 4 8 12
1 2 4 5 10 15
1 2 4 8 9 17 34 68 77
 
数据范围与提示
 
 ________________________
 
深搜,就是填一个表格,要求每个值是前面两个值的和,要求表格最短。
要求最短当然从大到小加,其他的就是普通搜索!

_________________________

 1 #include<bits/stdc++.h>
2 using namespace std;
3 int n,ans;
4 int sz[105],da[105];
5 void dfs(int p)
6 {
7 if(sz[p-1]>n)return;
8 if(p-1>=ans)return ;
9 if(sz[p-1]==n && p-1<ans)
10 {
11 ans=p-1;
12 for(int i=1;i<p;++i)da[i]=sz[i];
13 }
14 for(int i=p-1;i>=1;--i)
15 {
16 sz[p]=sz[p-1]+sz[i];
17 dfs(p+1);
18 }
19 }
20 int main()
21 {
22 sz[1]=1;
23 while(scanf("%d",&n)==1 && n)
24 {
25 ans=105;
26 dfs(2);
27 for(int i=1;i<=ans;++i)printf("%d ",da[i]);
28 putchar('\n');
29 }
30 return 0;
31 }

最新文章

  1. [goa]golang微服务框架学习(三)-- 使用swagger-ui展示API
  2. C#------如何取出exe运行文件给客户使用
  3. JavaScript 上万关键字瞬间匹配——借助Hash表快速匹配
  4. mybatis中的resultMap
  5. Backbone.js学习之初识hello-world
  6. CentOS查看CPU信息、位数、多核信息
  7. [cocos2dx 3.0 + iap]中文文档(转)
  8. centos下安装chdmg
  9. CSS找到 (div+css请讲)
  10. Spring Security(05)——异常信息本地化
  11. 接口测试思路,jmeter,接口测试流程
  12. iOS项目之获取WebView的高度
  13. python 进程之间的数据共享
  14. Devops流程规范
  15. sql server备份和还原
  16. ASP_NET实现界面无刷新的DropdownList两级联动效果
  17. java—单例设计模式
  18. C# 其他图片格式转emf
  19. asp.net——地址栏传递中文参数乱码解决方案
  20. javascript设为首页、加入收藏

热门文章

  1. 表单综合HTML
  2. android stdio 打包
  3. C++语言基础——02数据的存取
  4. Itranswarp 搭建个人 Wiki
  5. JDK1.7-HashMap原理
  6. 【剑指 Offer】04.二维数组中的查找
  7. rm: cannot remove `/tmp/localhost-mysql_cacti_stats.txt&#39;: Operation not permitted
  8. P1220 关路灯(区间规划)
  9. P1140 相似基因(字符串距离,递推)
  10. CSAPP:Lab1 -DataLab 超详解