迭代加深搜索

一、迭代加深

深度优先搜索每次选定一个分支,然后往下搜索,直到递归边界

才回溯。这种策略有一点缺陷,那就是当搜索树的分支数目特别

多,并且答案在某个较浅的节点上,如果dfs在一开始就选错了分

支,那就会在没有答案的深层次浪费时间

当搜索树规模随着层次的深入增长很快,并且能

够确保答案在一个较浅的节点上时,就可以使用

迭代加深搜索的深度优先搜索来解决问题

二、例题

Addition Chains

题目描述

原题来自:ZOJ 1937

已知一个数列a0,a1...am(其中 a0 = 1 , am = n , a0<a1<a2<...<am−1<am)。对于每个 k,需要满足 ak=ai+aj(0≤i,j≤k−1,这里 i 与j可以相等)。

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

输入

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

输入以 0 结束。 

输出

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

样例输入


                
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值