Addition Chains

http://poj.org/problem?id=2248

解题思路

首先我们能够明显看出这题的范围在10以内,于是乎,迭代加深就是理所应当的了;
然后就是剪枝问题:

1.为了使序列快速逼近n,应该把从大到小地枚举 Num[i]与Num[j];
2.因为X[i]+X[j]=X[j]+X[i],所以需要加一个记录,避免重复搜索某一个和;需要注意的是,因为查重针对每个分支生成的序列,故应该在DFS内部

总结

当一个问题的节点分支数很多,且我们能判断出它的层数不大,这时候就可以采用迭代加深的方法进行搜索;
迭代加深 思想的使用场景:
1.搜索树的规模随着层次的深入增长很快;
2.能够确保答案在较浅的节点时;

代码展示

#include<bits/stdc++.h>
using namespace std;
/**/
int num[15];int n;
int m; bool DFS(int lev){//bool类型的返回不能再像void 那样随意了,不必要就不用 if(lev>m){if(num[m]==n)return true;else return false;//!!!!}bool vis[110]={false};for(int i=lev-1;i>=1;i--){for(int j=lev-1;j>=1;j--){if(num[i]+num[j]<=n&&!vis[num[i]+num[j]]&&num[lev-1]<num[i]+num[j]){num[lev]=num[i]+num[j];vis[num[i]+num[j]]=1;if(DFS(lev+1))return true;vis[num[i]+num[j]]=0;}}}return false;
}
int main(){while(cin>>n){num[1]=1;if(n==1)cout<<1<<endl;else {for(int i=2;i<=10;i++){m=i;//memset(vis,0,sizeof(vis));if(DFS(2)){for(int i=1;i<=m;i++)cout<<num[i]<<" ";cout<<endl;break;}}}}return 0;
}

POJ2248-Addition Chains-经典搜索题详解优化相关推荐

  1. POJ1011-Sticks-经典搜索题详解优化

    Sticks http://poj.org/problem?id=1011 解题思路 1.一开始的思路是遍历木棒能组成的所有长度,然后进行许多判断:发现判断过程很复杂,做不了,就换了个思路: 2.遍历 ...

  2. 剑指offer(26-33题)详解

    文章目录 26 二叉搜索树与双向链表 27 字符串的排列 28 数字中出现次数超过一半的数字(待优化)★ 29 最小的K个数 30 连续子数组最大和 31 整数中1出现的次数 32 把数组排成最小的数 ...

  3. 让理科生沉默,让文科生流泪的综合题详解

    让理科生沉默,让文科生流泪的综合题详解 阿布evo 发表于  2011-05-09 21:34 原文地址:http://www.guokr.com/article/31315/ 这套题就是前两天在校内 ...

  4. 剑指offer(60-67题)详解

    文章目录 60 把二叉树打印成多行 61 序列化二叉树 62 二叉搜索树第K个节点 63 数据流中的中位数 64 滑动窗口的最大值 65 矩阵中的路径 66 机器人的运动范围 67 剪绳子 欢迎关注个 ...

  5. 剑指offer(11-25题)详解

    文章目录 11 二进制种1的个数★ 12 数值的正数次方 13 调整数组顺序使奇数位于偶数前面 14 链表中倒数第K个节点 15 反转链表 16 合并两个排序的链表 17 树的子结构 18 二叉树的镜 ...

  6. 2015年 第06届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  7. 2016年 第07届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  8. 2020年 第11届 蓝桥杯 第2次模拟赛真题详解及小结【Java版】

    蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...

  9. 2018年 第9届 蓝桥杯 Java B组 省赛真题详解及总结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:部分 ...

最新文章

  1. javascript装饰者模式
  2. 从实例入手,讲解 CMake 的常见用法。demo1-demo8
  3. [Specification by Example][ch5 Deriving scope from goals]-[读书笔记]-[4]
  4. 介绍一本好书《海量数据库解决方案》
  5. 国二python考试系统_分享自己的国二python经历
  6. foobar2000 正式登陆 iOS/Android
  7. 数学建模层次分析法例题及答案_数学建模之层次分析法
  8. 很迷茫,30岁,大专学历,没有一技之长,负债累累,怎么翻身?
  9. cocos creator编写简易游戏摇杆以及通过摇杆控制精灵移动
  10. 安全学习木马查杀打卡第二十一天
  11. Android7.1 亮度自动调节
  12. unexpected character `w‘ in type specifier 解决方案
  13. java回车触发按钮_java回车触发按钮的代码
  14. 迈向人工智能的下一步-《星际争霸II》
  15. C++虚函数概念及使用(基础)
  16. 解决-最新版Google谷歌浏览器上传下载卡死无响应-问题
  17. 什么是render函数?什么时候会用到render函数?
  18. Oracle创建同义词
  19. python renamer_Python sys.meta_path方法代码示例
  20. item_search - 根据关键词获取拼多多商品列表

热门文章

  1. 他人的数据挖掘面试题-经验
  2. JavaScript模块机制
  3. 如何做好一个软件测试管理者,高效带好团队呢?
  4. 使用appfox工具测试登录有图片验证码接口的问题
  5. Dreamweaver CSs网页设计css规则定义翻译
  6. CSDN 添加微信二维码
  7. 记录用retinaNet执行DDSM代码中的问题(求精度的过程中出现的错误)
  8. Xilinx ZCU106开发详解(Xilinx Zynq UltraScale+ MPSoC)
  9. 十大编程语言黑客向,学会一个不怕没工作,全部学会随便秀操作
  10. 十进制转换为32进制,并反转