描述
依次给你一个递增的数列,第一次给你1,第二次开始,每次给的数字是之前某两次和。告诉你一个数字M,表示第n次给你的数字,求最小的n,同时打印出这n个数的数列,有多组解输出任意
输入
一行,只有一个整数m
输出
第一行输出n。第二行输出数列,每两个数之间有且仅有一个空格。
样例输入
4
样例输出
3
1 2 4
提示
本次是数字4。第一次1,第二次2,第三次(当前)4 。
测试点编号 M 测试点编号 M
1 <=20 ;6 <=1000
2 <=30;7 <=2500
3 <=40 ;8 <=3000
4 <=50 ;9 <=4000
5 <=60 ;10 <=5000

只会打表啊

要迭代加深

不断增加层数

看是否能搜索到

不能贪心一直往后跑

#include<bits/stdc++.h>
using namespace std;
inline int read(){char ch=getchar();int res=0;while(!isdigit(ch)) ch=getchar();while(isdigit(ch)) res=(res<<1)+(res<<3)+(ch^48),ch=getchar();return res;
}
int n,stk[5005],m,top=1;
inline void write(){cout<<top<<'\n';for(int i=1;i<=top;++i)cout<<stk[i]<<" ";exit(0);
}
bool dfs(int pos){if(stk[pos-1]==n)write();if(pos>top)return false;    for(int i=pos-1;i>=1;--i){for(int j=pos-1;j>=i;--j){stk[pos]=stk[i]+stk[j];if((stk[pos]<<(top-pos))<n)break;if((stk[pos]+(top-pos))>n)break;if(stk[pos]<=stk[pos-1])break;dfs(pos+1);}}return false;
}
int main(){//  freopen("sequence.in","r",stdin);
//  freopen("sequence.out","w",stdout);n=read();stk[1]=1;while(!dfs(2))++top;
}

转载于:https://www.cnblogs.com/stargazer-cyk/p/10366426.html

递增序列(迭代加深)相关推荐

  1. 递增数列(迭代加深搜索)

    迭代加深搜索就是限制递归的层数,然后一层层地扩大限制的层数 我们记录当前深度,以及当前应该搜出几个数 设计剪枝: 1.当当前深度乘上2^r(r是还没有选的数)比m还小 那肯定是不行的 因为最大的扩展方 ...

  2. 【日常练习】递增数列 【迭代加深】

    题解 之前没怎么学过A*,IDA*,迭代加深这些搜索算法,只知道搜索+剪枝,真是惭愧-- 错误算法 因为很容易发现,在第i位上你最多能凑出2i-1大小的数,所以我们就贪心凑出小于等于给定的m的最大的那 ...

  3. 迭代加深搜索与埃及分数求解

    迭代加深搜索,实质上是限定下界的深度优先搜索.即首先允许深度优先搜索K层,若没有发现可行解,再将K+1后 重复以上步骤搜索,直到搜索到可行解. 在迭代加深搜索的算法中,连续的深度优先搜索被引入,每一个 ...

  4. POJ2248 Addition Chains(迭代加深搜索)

    题目链接: poj2248 题目大意 给你一个数字n,你需要构造一个首项为1,末项为n的递增序列,并且这个序列的非首项的数字都能从它前面找到两项之和与之相等,前面的两项可以为同一项,即可重复,并且要让 ...

  5. 再探深搜之剪枝、迭代加深及双向搜索

    一.剪枝 剪枝的基本方法: 1.优化搜索顺序 2.排除等效冗余 3.可行性剪枝(上下界剪枝) 4.最优性剪枝 例题1:AcWing 167.木棒 这题首先很容易想出暴力的代码:从小到大枚举木棍总长度的 ...

  6. POJ - 2248 Addition Chains(dfs+迭代加深)

    题目链接:点击查看 题目大意:我们规定加法链有如下特点: 现在给出一个数n,求该数的最短加法链 题目分析:这个题首先我们可以枚举所有可能性,并且进行适当的剪枝: 当前长度大于等于最优解时回溯 当前值等 ...

  7. 埃及分数问题+迭代加深搜索

    理论上可以用回溯法求解,但是解答树非常恐怖,其一深度没有明显上限,1/i的值似乎可以在枚举不断更大的i时越来越小:其二加数的选择在理论上无限制. 解决方案采用迭代加深搜索:从小到大枚举深度上限maxd ...

  8. 巴士(DFS迭代加深 + 剪枝)

    原题链接: https://www.acwing.com/problem/content/188/ 题目描述 一名男子在12:00抵达了某巴士站,并且在12:00-12:59期间他将在那里逗留. 巴士 ...

  9. 搜索进阶之迭代加深搜索

    迭代加深搜索 首先这个不要怕这个东西,其实我刚开始学这个搜索也觉得特别高大上,觉得都是很高大上让人听不懂的专业术语,其实说白了迭代加深搜索的思想和精髓就是控制了搜索深度的dfs,但是却能够达到广搜的效 ...

  10. 浅谈*迭代加深*深度优先搜索

    目录 算法核心概念及思想 算法的产生 概念 拯救时间的函数 例题:<加法链> 如题,由于此文章只讲"迭代加深",所以请先了解what "深度优先搜索" ...

最新文章

  1. IOS开发笔记1-写一个hello world!程序
  2. Java源码解析:深入理解==和equals()
  3. JavaScript内存释放笔记
  4. java如何读取下拉列表的值_java - 如何在Selenium 2中选择/获取下拉选项
  5. html5水调歌头代码,张惠言的五首《水调歌头》
  6. 原生js实现简单的焦点图效果
  7. c语言程序设计基础项目教程,C语言程序设计基础项目教程
  8. 创建维护计划失败_如何善于创建和维护大型系统
  9. 【零基础学Java】—Java 日期时间(三十一)
  10. 博弈论初步(SG函数)
  11. html弹幕效果加入视频,JS实现的视频弹幕效果示例
  12. SpringMVC的Model、Model Map、ModelAndView
  13. QDialog之屏蔽Esc键
  14. 金属箔式应变片实验思考题
  15. coreldraw怎样定数等分_coreldraw 里怎么将线段等分?
  16. 清华山维EPS二次开发基础篇
  17. 主图指标,原创极强黄点,将军柱和黄金柱都是3日的
  18. 微信视频号发布69条直播违规条例
  19. MySQL—关联查询与子查询(从小白到大牛)
  20. LaTex: 多种方法实现图片复杂排列

热门文章

  1. Leetcode431.将N叉树编码为二叉树(golang)
  2. 汇编学习--7.16--直接定址表
  3. 截取字符串_妙用字符串的替换和截取让Shell脚本精准得到你心中的那个“她”...
  4. 累加寄存器(AC)入门
  5. ORC 和 Parquet比较入门
  6. lua操作redis
  7. Hbase与zookeeper
  8. CSS绝对底部布局 Sticky footer
  9. ACCESS常用数字类型的说明和取值范围
  10. 【python】Django设置SESSION超时时间没有生效?