首先,在这道题的搜索框架中,在对每一位进行枚举时,复杂度为\(O(n^2)\),但是可知最优解序列的长度不会太长。

其次,采用 \(bool\) 类型返回值时,是一种存在性搜索,并不一定能够得到最优解。

综合以上两点,需要采取迭代化搜索,每次限制在当前层中找出一个符合条件的答案,如果找到了的话一定是最优解。

updated at 2019.4.27

迭代加深搜索的劣势在于,每次迭代的过程中,对于前面已经失败的情况,依然要重复进行搜索,会导致时间上的冗余。不过,若每一层的分支情况过多时,冗余的操作要比多搜索无用层的代价小得多。

代码如下

#include <cstdio>
#include <memory.h>
using namespace std;
const int maxn=110; int a[maxn],n,dep; bool dfs(int now){
if(now==dep+1)return a[dep]==n; for(int i=now-1;i>=1;i--)//优化枚举顺序
for(int j=i;j>=1;j--){
if(a[i]+a[j]>n)continue;
if(a[i]+a[j]<=a[now-1])break;
a[now]=a[i]+a[j];
if(dfs(now+1))return 1;
}
return 0;
} int main(){
while(scanf("%d",&n)&&n){
memset(a,0,sizeof(a));
a[1]=1;
for(dep=1;;dep++)if(dfs(2))break;
for(int i=1;i<=dep;i++)
printf("%d%c",a[i],i==dep?'\n':' ');
}
return 0;
}

【POJ2248】加法链 idfs的更多相关文章

  1. block和代理小结

    代理使用原则: 代理方法的参数是要传的值,代理方法的返回值是要得到的值(即要调用的类回传的值),并且在实现的代理方法中的值就是原来的类要传的值(设置delegate=self),  比如2个类 A,B ...

  2. UVA 529 Addition Chains(迭代搜索)

      Addition Chains  An addition chain for n is an integer sequence  with the following four propertie ...

  3. 图像处理:卷积模块FPGA 硬件加速

    本文记录了利用FPGA加速图像处理中的卷积计算的设计与实现.实现环境为Altera公司的Cyclone IV型芯片,NIOS II软核+FPGA架构. 由于这是第一次设计硬件加速模块,设计中的瑕疵以及 ...

  4. [SinGuLaRiTy] 高级搜索算法

    [SinGuLaRiTy-1039] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 迭代加深搜索(ID) 迭代加深搜索,实质上就是限定下界的 ...

  5. 「一本通 1.3 例 4」Addition Chains

    Addition Chains 题面 对于一个数列 \(a_1,a_2 \dots a_{m-1},a_m\) 且 \(a_1<a_2 \dots a_{m-1}<a_m\). 数列中的一 ...

  6. Android 图片加载框架Picasso基本使用和源码完全解析(巨细无比)

    写在之前 原本打算是每周更新一篇博文,同时记录一周的生活状态,但是稍微工作忙一点就顾不上写博客了.悲催 还是说下最近的状况,最近两周一直在接公司申请的计费点, 沃商店,银贝壳,微信等等,然后就是不停的 ...

  7. SpringBoot启动如何加载application.yml配置文件

    一.前言 在spring时代配置文件的加载都是通过web.xml配置加载的(Servlet3.0之前),可能配置方式有所不同,但是大多数都是通过指定路径的文件名的形式去告诉spring该加载哪个文件: ...

  8. 从一个URL加载一个Document

    存在问题 你需要从一个网站获取和解析一个HTML文档,并查找其中的相关数据.你可以使用下面解决方法: 解决方法 使用 Jsoup.connect(String url)方法: Document doc ...

  9. 百度推出新技术 MIP,网页加载更快,广告呢?

    我们在2016年年初推出了MIP,帮助移动页面加速(原理).内测数据表明,MIP页面在1s内加载完成.现在已经有十多家网站加入MIP项目,有更多的网站正在加入中.在我们收到的反馈中,大部分都提到了广告 ...

随机推荐

  1. 微服务之Sping Cloud

    版本说明 Finchley SR2 价值简要 微服务之间是松耦合,跨不同业务部门,提供非常充分的灵活性,加快项目开发完成效率,方便组件化独立可扩展性及复用. 微服务应用结构表现 组件简要 1. Eur ...

  2. Rancher + k8s + docker 部署资料

    一.k8s 文档: https://jimmysong.io/kubernetes-handbook/concepts/deployment.html 命令行大全 https://kubernetes ...

  3. C#_根据银行卡卡号判断银行名称

    /// <summary> /// 银行信息 /// </summary> public class BankInfo { #region 数组形式存储银行BIN号 /// & ...

  4. [linux] VirtualBox复制虚拟机

    环境: Oracle VM VirtualBox 5.0.20 CentOS-6.7-x86_64-minimal.iso 1.复制虚拟机 -->右击休眠状态模板虚拟机,选择复制 -->填 ...

  5. 修改docker的地址为阿里云源

    https://blog.csdn.net/jacabe/article/details/78575316

  6. LINUX实践之模块

    模块实践 --关于模块代码部分 ---首先是.c代码: 一定会用到的函数有这几个:module_init().module_exit().MODULE_LICENSE() 会用到的头文件:module ...

  7. SuperMaze(Hello World 团队)Alpha版使用说明

    一.产品介绍 超级迷宫是一款android的手机游戏,目前我们已经在PC 端成功实现大体功能,虽然虽然迷宫游戏不少但我们的游戏渐渐的会假如自己的特色功能,尽量吸引用户,通过游戏开发智力,通过游戏打发无 ...

  8. 查看电脑保存的wifi密码

    查看电脑保存的wifi密码 查看电脑链接过的WiFinetsh wlan show profile 查看wifi的密码netsh wlan show profile name=8888 key=cle ...

  9. springboot整合fastJson遇到重定向问题

    通过网上教程使用springboot整合fastJson后遇到页面重定向问题(使用的springboot版本是2.0.2.RELEASE ,其他的版本可能不会出现以下问题),如下图: 我的项目结构如下 ...

  10. [buaa-SE-2017]个人项目

    个人项目 Part1:github https://github.com/Aria-K-Alethia/Sudoku Part2:解题思路描述 关于数独的解法 我选择的是暴力搜索算法. (1)关于 - ...