题目链接:http://bailian.openjudge.cn/practice/2248

题解:

迭代加深DFS。

DFS思路:从目前 $x[1 \sim p]$ 中选取两个,作为一个新的值尝试放入 $x[p+1]$。

迭代加深思路:设定一个深度限制,一旦到达这个界限,即继续往下搜索;该深度限制从 $1$ 开始,每次自加 $1$。这么做的好处是,正好也符合题目要求的最短的数组长度。

AC代码:

#include<bits/stdc++.h>
using namespace std;
int n,x[]; int d;
bool dfs(int p)
{
if(p==d) return x[p]==n;
bool vis[];
memset(vis,,sizeof(vis));
for(int i=p;i>=;i--)
{
for(int j=p;j>=i;j--)
{
int tp=x[i]+x[j];
if(tp>n || x[p]>=tp) continue;
if(!vis[tp])
{
x[p+]=tp;
if(dfs(p+)) return ;
else vis[tp]=;
}
}
}
return ;
} int main()
{
x[]=;
while(cin>>n && n)
{
for(d=;!dfs();d++);
for(int i=;i<=d;i++) printf("%d ",x[i]);
printf("\n");
}
}

POJ 2248 - Addition Chains - [迭代加深DFS]的更多相关文章

  1. poj 2248 Addition Chains (迭代加深搜索)

    [题目描述] An addition chain for n is an integer sequence with the following four properties: a0 = 1 am ...

  2. [POJ2248] Addition Chains 迭代加深搜索

    Addition Chains Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5454   Accepted: 2923   ...

  3. [POJ 2248]Addition Chains

    Description An addition chain for n is an integer sequence with the following four properties: a0 = ...

  4. POJ2248 Addition Chains 迭代加深

    不知蓝书的标程在说什么,,,,于是自己想了一下...发现自己的代码短的一批... 限制搜索深度+枚举时从大往小枚举,以更接近n+bool判重,避免重复搜索 #include<cstdio> ...

  5. [zoj] 1937 [poj] 2248 Addition Chains || ID-DFS

    原题 给出数n,求出1......n 一串数,其中每个数字分解的两个加数都在这个序列中(除了1,两个加数可以相同),要求这个序列最短. ++m,dfs得到即可.并且事实上不需要提前打好表,直接输出就可 ...

  6. poj 3134 Power Calculus(迭代加深dfs+强剪枝)

    Description Starting with x and repeatedly multiplying by x, we can compute x31 with thirty multipli ...

  7. POJ 2245 Addition Chains(算竞进阶习题)

    迭代加深dfs 每次控制序列的长度,依次加深搜索 有几个剪枝: 优化搜索顺序,从大往下枚举i, j这样能够让序列中的数尽快逼近n 对于不同i,j和可能是相等的,在枚举的时候用过的数肯定不会再被填上所以 ...

  8. poj2286The Rotation Game(迭代加深dfs)

    链接 把迭代加深理解错了 自己写了半天也没写对 所谓迭代加深,就是在深度无上限的情况下,先预估一个深度(尽量小)进行搜索,如果没有找到解,再逐步放大深度搜索.这种方法虽然会导致重复的遍历 某些结点,但 ...

  9. POJ-3134-Power Calculus(迭代加深DFS)

    Description Starting with x and repeatedly multiplying by x, we can compute x31 with thirty multipli ...

随机推荐

  1. 基本够用的php.ini配置文件(CentOS7)

    [PHP] engine = On short_open_tag = Off asp_tags = Off precision = output_buffering = zlib.output_com ...

  2. [.NET] 一个获取随机数的新方式

    private Random GetRandomSeed() { byte[] bytes = new byte[4]; RNGCryptoServiceProvider rng = new RNGC ...

  3. C++中的三种继承关系

    C++中的三种继承关系 先看类中声明成员时的三种访问权限 public : 可以被任意实体访问 protected : 只允许子类及本类的成员函数访问 private : 只允许本类的成员函数访问 在 ...

  4. MySQL技术内幕读书笔记(八)——事务

    事务的实现 ​ 事务隔离性由锁来实现.原子性.一致性.持久性通过数据库的redo log和undo log来完成.redo log称为重做日志,用来保证事务的原子性和持久性.undo log用来保证事 ...

  5. Effective Java 第三版——63. 注意字符串连接的性能

    Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...

  6. Mathematica绘制曲面交线方法

    新引入的SliceContourPlot不错 SliceContourPlot3D[y, (1.7 x^2 + y/3 + 0.6 z^2) (1.7 (x - 2)^2 + y/3 + 0.6 z^ ...

  7. sed用法去除行首和行末的中括号

    sed去掉行首和行末的中括号: sed -i 's:^\[::; s:\]$::;' newtrace_nlp.log.2018-08-02.bak 其余可依次类推.

  8. C语言 · 组合数

    组合数 从4个人中选2个人参加活动,一共有6种选法. 从n个人中选m个人参加活动,一共有多少种选法?下面的函数实现了这个功能. 请仔细分析代码,填写缺少的部分(下划线部分). 注意:请把填空的答案(仅 ...

  9. SpringMvc自动任务调度之task实现项目源码,@Scheduled

    1.Xml配置 Spring-job.xml 并在 Spring-Application.xml中Import <?xml version="1.0" encoding=&q ...

  10. 抖音圈圈乐 系统搭建H5微信小游戏圈圈乐系统介绍

    网红线下游戏抖音圈圈乐改造而来 一.搭建此系统需要准备如下资料: 1. 认证微信服务号 2. 微信支付商户号 3. 备案域名及云服务器 二.系统功能简介: 1. 游戏闯关 2. 每个商品闯关难度后台自 ...