Strange Towers of Hanoi POJ - 1958(递推)
题意:就是让你求出4个塔的汉诺塔的最小移动步数,(1 <= n <= 12)
那么我们知道3个塔的汉诺塔问题的解为:d[n] = 2*d[n-1] + 1 ,可以解释为把n-1个圆盘移动到一个临时柱子上,然后将1个最大圆盘移动到目标的主子,最后再将n-1个圆盘移动到目标柱子。
为什么是n-1和1的组合呢,因为当你将n-i个圆盘移动到一个临时柱子上的时候,你会发现只靠两个柱子最多能移动1个圆盘。所以这个i=1
如果推到到4个柱子的汉诺塔,f[n] = min(f[n],2*f[n-i]+d[i]). (1 <= i < n),就是把n-i个圆盘移动到临时的一个柱子上,然后把剩下的 i 个圆盘在三个柱子中移动到目标柱子,最后把n-i移动会目标柱子
#include<iostream>
#include<string.h>
#include<cstdio>
using namespace std; int d[];
int f[];
int main()
{
d[] = ;
for(int i=;i<=;i++)d[i] = (d[i-]<<)+;
memset(f,0x3f,sizeof(f));
f[] = ;
for(int i=;i<=;i++)
{
for(int j=;j<i;j++)
{
f[i] = min(f[i],(f[j]<<)+d[i-j]);
}
}
for(int i=;i<=;i++)
{
printf("%d\n",f[i]);
}
}
Strange Towers of Hanoi POJ - 1958(递推)的更多相关文章
- POJ1958 Strange Towers of Hanoi [递推]
		
题目传送门 Strange Towers of Hanoi Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 3117 Ac ...
 - POJ 1958 Strange Towers of Hanoi 解题报告
		
Strange Towers of Hanoi 大体意思是要求\(n\)盘4的的hanoi tower问题. 总所周知,\(n\)盘3塔有递推公式\(d[i]=dp[i-1]*2+1\) 令\(f[i ...
 - POJ 1958 Strange Towers of Hanoi
		
Strange Towers of Hanoi Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 3784 Accepted: 23 ...
 - POJ-1958 Strange Towers of Hanoi(线性动规)
		
Strange Towers of Hanoi Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 2677 Accepted: 17 ...
 - poj1958——Strange Towers of Hanoi
		
The teacher points to the blackboard (Fig. 4) and says: "So here is the problem: There are thre ...
 - poj1958 strange towers of hanoi
		
说是递推,其实也算是个DP吧. 就是4塔的汉诺塔问题. 考虑三塔:先从a挪n-1个到b,把最大的挪到c,然后再把n-1个从b挪到c,所以是 f[i] = 2 * f[i-1] + 1; 那么4塔类似: ...
 - 放苹果 POJ - 1664  递推
		
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. Input 第一行是测试数据的数目t(0 <= t < ...
 - 【POJ 1958】 Strange Towers of Hanoi
		
[题目链接] http://poj.org/problem?id=1958 [算法] 先考虑三个塔的情况,g[i]表示在三塔情况下的移动步数,则g[i] = g[i-1] * 2 + 1 再考虑四个塔 ...
 - POJ1958:Strange Towers of Hanoi
		
我对状态空间的理解:https://www.cnblogs.com/AKMer/p/9622590.html 题目传送门:http://poj.org/problem?id=1958 题目要我们求四柱 ...
 
随机推荐
- iOS 上线过程中出现的问题总结
			
1: 因为使用后台播放音乐,在 info 里面添加 required background modes 的 key, 如果你的代码里面没有后套播放音频的功能, 不要添加 required back ...
 - spring各版本jar包和源码
			
spring各版本jar包和源码 spring历史版本源码:https://github.com/spring-projects/spring-framework/tags spring历史jar包和 ...
 - Confluence 6 SQL 异常的问题解决
			
如果你得到了与下面显示内容类似的信息话,那么你最好考虑修改 Confluence 的日志级别输出更多的信息.如果你考虑通过 Atlassian support 获得帮助,那么这些详细的错误信息能够更好 ...
 - Confluence 6 用户目录图例 - Confluence 内部目录
			
上面的图:Confluence 使用内部目录为用户管理. https://www.cwiki.us/display/CONFLUENCEWIKI/Diagrams+of+Possible+Config ...
 - BIgnum类的程序提交
			
日期:2018.7.19 星期四 博客期:002 这之前赶着做一个单机游戏的修改器忘了时间,不好意思啊!今天我就把Bignum类的源代码发出来,文件的话,我不知道怎样发,待我好好研究研究这个网站哈!因 ...
 - ionic3 打包Xcode 9 Swift Language Version (SWIFT_VERSION) Ask  报错
			
解决方案 选择4.0 然后报错17个,类似以下这样的错误 'AVMediaTypeVideo' has been renamed to 'AVMediaType.video' 根据提示更改 AVMed ...
 - Executor多线程框架使用
			
在我们的JDK1.5的时候JAVA推出一款为了更加方便开发的多线程应用而封装的框架(Executor),相比传统的Thread类,Executor更加的方便,性能好,更易于管理,而且支持线程池.一般在 ...
 - bzoj3991 lca+dfs序应用+set综合应用
			
/* 给定一棵树,树上会出现宝物,也会有宝物消失 规定如果要收集树上所有宝物,就要选择一个点开始,到每个宝物点都跑一次,然后再回到那个点 现在给定m次修改,每次修改后树上就有一个宝物消失,或者一个宝物 ...
 - 20165314 2016-2017- 3《Java程序设计》第2周学习总结
			
20165314 2016-2017- 3<Java程序设计>第2周学习总结 教材学习内容总结 byte<short<char<int<long<float& ...
 - Centos6.8部署jumpserver(完整版)
			
环境: 系统 Centos6.8 IP:192.168.66.131 关闭selinux和防火墙 # 修改字符集,否则可能报 input/output error的问题,因为日志里打印了中文 # lo ...