1443:【例题4】Addition Chains
1443:【例题4】Addition Chains

题解
注释在代码里
注意优化搜索顺序以及最优化剪枝
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<queue>
#include<functional> using namespace std; int n,minn,ans[],a[];
//n是序列的最大值
//minn是拆数字最小层数
//ans存答案
//a是一个过程中起记录作用的数组 void dfs(int x) //递归第x层
{
if(x->minn) return ; //超过最小层数,剪枝
if(a[x-]>n) return; //上一层的数字大于最大值n,剪枝
if(a[x-]==n) //上一层的数字=n,有希望构成一个完整解答
{
if((x-1)>=minn) return; //很遗憾,层数超了
minn=x-; //记下暂定答案
for(int i=;i<x;i++) ans[i]=a[i];
}
else
{
for(int j=x-;j>=;j--)
//题目要求ak=ai+aj,倒着枚举一下,看看能否继续扩展下一层
{
if(a[x-]+a[j]<=n)
{
a[x]=a[x-]+a[j]; //可以继续扩展
dfs(x+);
a[x]=; //回溯
}
}
}
} int main()
{
while(scanf("%d",&n)!=EOF) //输入非空
{
if(n==) break;
else
{
a[]=; //初始化第一层为1
minn=; //拆数字的最小层数
dfs(); //从第二层开始递归
for(int i=;i<=minn;i++) printf("%d ",ans[i]); //确定层数,输出答案
printf("\n");
}
}
return ;
}
特别鸣谢
orz 神仙
1443:【例题4】Addition Chains的更多相关文章
- UVA 529 Addition Chains(迭代搜索)
		Addition Chains An addition chain for n is an integer sequence with the following four propertie ... 
- [POJ2248] Addition Chains 迭代加深搜索
		Addition Chains Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5454 Accepted: 2923 ... 
- poj 2248 Addition Chains (迭代加深搜索)
		[题目描述] An addition chain for n is an integer sequence with the following four properties: a0 = 1 am ... 
- 「一本通 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\). 数列中的一 ... 
- 一本通【例题4】Addition Chains——题解
		又是一道剪枝剪了半天的搜索题...题目传送 要充分利用题目中的约束条件:1.:2.对于每个k(1≤k≤m)k(1≤k≤m)满足ak=ai+aj(0≤i,j≤k−1)ak=ai+aj(0≤i,j≤k−1 ... 
- UVA 529 - Addition Chains,迭代加深搜索+剪枝
		Description An addition chain for n is an integer sequence with the following four properties: a0 = ... 
- [POJ 2248]Addition Chains
		Description An addition chain for n is an integer sequence with the following four properties: a0 = ... 
- Addition Chains POJ - 2248 (bfs / dfs / 迭代加深)
		An addition chain for n is an integer sequence <a0, a1,a2,...,am=""> with the follow ... 
- C++解题报告 : 迭代加深搜索之 ZOJ 1937  Addition Chains
		此题不难,主要思路便是IDDFS(迭代加深搜索),关键在于优化. 一个IDDFS的简单介绍,没有了解的同学可以看看: https://www.cnblogs.com/MisakaMKT/article ... 
随机推荐
- 092、部署Graylog日志系统(2019-05-16 周四)
			参考https://www.cnblogs.com/CloudMan6/p/7808708.html Graylog 是与 ELK 可以相提并论的一款几种式日志管理方案,支持数据收集.检索.可视化 ... 
- 浅谈XXE
			转自FReeBUF 0×00. 介绍 现在越来越多主要的web程序被发现和报告存在XXE(XML External Entity attack)漏洞,比如说facebook.paypal等等. 举个例 ... 
- 人工智能AI从入门到精通所有视频教程(140G)以及数据资料免费拿
			包含了人工智能AI从入门到精通所有视频教程(140G). 资料获取方式,关注公总号RaoRao1994,查看往期精彩-所有文章,即可获取资源下载链接 更多资源获取,请关注公总号RaoRao1994 
- 基于双XCKU060+双C6678 的双FMC接口40G光纤传输加速计算卡
			基于双XCKU060+双C6678 的双FMC接口40G光纤传输加速计算卡 一.板卡概述 板卡采用基于双FPGA+双DSP的信号采集综合处理硬件平台,板卡大小360mmx217mm.板卡两片FPGA提 ... 
- libev个人问题解惑
			我们的游戏后端一直以来用的都是libev,之前尝试过去读源码,因为里面用了大量宏和自己也不够耐心的原因,一直没有看懂.这次终于痛下决心,一定要啃下它,于是在这个星期调整自己的工作学习方式(在读源码的过 ... 
- PAT Advanced 1048 Find Coins (25 分)
			Eva loves to collect coins from all over the universe, including some other planets like Mars. One d ... 
- 安装CRMEasy步骤
			生成CRMEasy安装包的步骤: 所需文件: InstallShieldExpress软件 CRMEasy.iwz工程文件 XP系统(虚拟机即可) 安装 CRMEasy 步骤: 1.windows X ... 
- (转) Weblogic 12c 集群部署和session复制
			1.启动服务 首先在weblogic12c控制台,启动受托管服务server1.server2.server3. 2.将要部署的应用打包成war文件. 我用的是MyEclipse做的开发,可以用其自带 ... 
- [工具] BurpSuite--XssValidator插件
			0x00 安装 所需软件: 1.burpsuite 2.xssvalidator 源码:https://github.com/nVisium/xssValidator(按照编译指导编译) burpsu ... 
- chrome获取页面element的xPath
			chrome真的是强大的工具 1.在chrome打开的页面点击F12,进入开发者模式 2.点击弹出的开发者工具左上角的跟踪箭头,再点击需要跟踪的页面元素,html程序定位到元素在程序中位置 3.选中的 ... 
