HDU 1207 汉诺塔II (递推)
Gardon是个怕麻烦的人(恩,就是爱偷懒的人),很显然将64个圆盘逐一搬动直到所有的盘子都到达第三个柱子上很困难,所以Gardon决定作个小弊,他又找来了一根一模一样的柱子,通过这个柱子来更快的把所有的盘子移到第三个柱子上。下面的问题就是:当Gardon在一次游戏中使用了N个盘子时,他需要多少次移动才能把他们都移到第三个柱子上?很显然,在没有第四个柱子时,问题的解是2^N-1,但现在有了这个柱子的帮助,又该是多少呢?
Input包含多组数据,每个数据一行,是盘子的数目N(1<=N<=64)。
Output对于每组数据,输出一个数,到达目标需要的最少的移动数。
Sample Input
1 3 12
Sample Output
1 5 81
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 using namespace std; 6 const int INF=99999999; 7 int f[65]; 8 void Init(){ 9 f[1]=1; f[2]=3; 10 for(int i=3;i<65;i++){ 11 int minx=INF; 12 for(int x=1;x<i;x++) 13 if(2*f[x]+pow(2,i-x)-1<minx) 14 minx=2*f[x]+pow(2,i-x)-1; 15 f[i]=minx; 16 } 17 } 18 int main(){ 19 int n; 20 Init(); 21 while(~scanf("%d",&n)){ 22 printf("%d\n",f[n]); 23 } 24 return 0; 25 }
转载于:https://www.cnblogs.com/shixinzei/p/7295089.html
HDU 1207 汉诺塔II (递推)相关推荐
- hdu 2064汉诺塔III 递推
汉诺塔递推题,比汉诺塔多了一个限制条件,盘子只允许在相邻的柱子之间移动. 分析: 第1步:初始状态: 第2步:把上面的n-1个盘移到第3号杆上: 第3步:把第n个盘从1移到2: 第4步:把前n-1个从 ...
- hdu 1207 汉诺塔II (四柱汉诺塔)
思路是借鉴网上一大牛的,写的很完美了,所以一句没改,代码是自己敲的,C语言版 变体汉诺塔 问题描述:在经典汉诺塔的基础上加一个条件,即,如果再加一根柱子(即现在有四根柱子a,b,c,d),计算将n个盘 ...
- [HDU 1207] 汉诺塔II (四柱汉诺塔)
描述 经典的汉诺塔问题经常作为一个递归的经典例题存在.可能有人并不知道汉诺塔问题的典故.汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下往上按大小顺序摞着64片黄金圆 ...
- 《算法竞赛进阶指南》打卡-基本算法-AcWing 96. 奇怪的汉诺塔:递推
文章目录 题目解答 题目链接 题目解答 来源:acwing 分析: 本题的汉诺塔问题是n个盘子4个塔,最基本的汉诺塔是n个盘子3个塔.本题是要在后者的基础上来做. 设d[i]表示i盘3塔问题的最小移动 ...
- 96. 奇怪的汉诺塔【递推】
这是一道很经典的问题. 先看3个塔的情况 需要注意的是,这里的汉诺塔移动并无只可以移动到相邻塔的需求.即可以直接从A移到C. 设d[i]表示将i个盘子从这里移到其他除它之外塔的步数 ,总塔的数量为3 ...
- 汉诺塔VII(递推,模拟)
汉诺塔VII Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...
- 四柱子汉诺塔—递归—递推
三塔:递推式:d[n] = 2 * d[n-1] + 1 即把前n-1个盘子从A柱移到B柱,然后把A柱上剩的那一个盘子移动到C柱,最后把B柱上的那n-1个盘子移动到C柱上 四塔:递推式:f[n] = ...
- 【递推】HDU1207汉诺塔II 【汉诺塔及汉诺塔变形 归纳】
汉诺塔问题 设f(n)为移动n层的汉诺塔的解,则整个过程其实分为三步: 把n-1层移到第二个上面去(花费f(n-1)) 把最大的移到第三个柱子上面去(花费1) 把n-1层移动到第三个柱子上去(花费f( ...
- 汉诺塔系列问题: 汉诺塔II、汉诺塔III、汉诺塔IV、汉诺塔V、汉诺塔VI、汉诺塔VII
汉诺塔II:(hdu1207) /先说汉若塔I(经典汉若塔问题),有三塔,A塔从小到大从上至下放有N个盘子,现在要搬到目标C上, 规则小的必需放在大的上面,每次搬一个,求最小步数.这个问题简单,DP: ...
最新文章
- 百度李彦宏:人工智能是万物命脉
- python获取文件的大小_python获取文件大小
- android项目编码规范,Android 项目规范
- php如何编造简历,在简历里编造内容需要注意哪些问题?
- 一步一步学习Servlet之Session使用
- 【剑指offer】链表中环的入口
- [导入][ASP.NET 控件实作 Day14] 继承 CompositeControl 实作 Toolbar 控件
- TCP Timestamp选项
- Git 之 多人协同开发工作流
- idea项目列表名称与项目名称不一致
- transferwise怎么提现_境外收款和汇款工具推荐:TransferWise 可提现美元到国内
- 好嗨游戏:TapTap9.9分,《鸡你太美》这到底是什么魔鬼游戏?
- 【前端学习笔记—canvas标签和使用canvas画哆啦A梦案例】
- dhcp应该开启还是关闭(dhcp应该开启还是关闭)
- 国际短信平台接口调用的方法步骤,简单5步快速教程
- python语言是编译型语言-解释型语言与编译型语言
- QTextEdit和QTextDocument(一)
- StatsD 五种类型数据发送形式拟测试
- 手机浏览器能接收彩信,还hold住吗?
- Strongly Connected Tournament
热门文章
- 三维点云学习(4)5-DBSCNA python 复现-2-kd-_tree加速
- 【前端 · 面试 】HTTP 总结(二)—— HTTP 消息
- maven安装以及常用配置,idea如何配置maven
- ireport导出pdf后中文字符全部不显示(已解决)
- ORA-01078: failure in processing system parameters
- 数据库建表设计规范及原则
- 数学之美-隐含马尔可夫模型-笔记
- python range倒序_Python算法学习之堆和堆排序
- esri-leaflet入门教程(3)-自定义底图
- android gps转换度分秒,如何将GPS数据转换为度分秒