96. 奇怪的汉诺塔【递推】
这是一道很经典的问题。
先看3个塔的情况
需要注意的是,这里的汉诺塔移动并无只可以移动到相邻塔的需求。即可以直接从A移到C。
设d[i]表示将i个盘子从这里移到其他除它之外塔的步数 ,总塔的数量为3
故d[i]=d[i-1]+d[i-1]+1 即将i-1个盘子移到B,将i号盘子移动C,再将i-1个盘子从B移到C
接下来分析4个塔的情况
设f[i]表示将i个盘子从这里移到其他除它之外塔的步数,总塔的数量为4
f[i]=min(f[i],f[j]+f[j]+d[i-j])
将j个盘子移到一个柱子,此时的j个盘子已经占了一个柱子,故剩余的i-j个盘子按照三个盘子的套路移动到D,再将j个盘子弄到D
这里都是f[j]是因为,移开的时候好分析,有三个柱子可以用,回来的时候因为我们排好的盘子在D柱子已经是大的盘子,故不影响还是f[j]
#include<bits/stdc++.h>
using namespace std;
const int N=15;
int f[N],d[N];
int main(void)
{d[1]=1;for(int i=2;i<=12;i++) d[i]=d[i-1]*2+1;memset(f,0x3f,sizeof f);f[1]=1;for(int i=2;i<=12;i++)for(int j=1;j<i;j++) f[i]=min(f[i],f[j]*2+d[i-j]);for(int i=1;i<=12;i++) cout<<f[i]<<endl;return 0;
}
96. 奇怪的汉诺塔【递推】相关推荐
- 《算法竞赛进阶指南》打卡-基本算法-AcWing 96. 奇怪的汉诺塔:递推
文章目录 题目解答 题目链接 题目解答 来源:acwing 分析: 本题的汉诺塔问题是n个盘子4个塔,最基本的汉诺塔是n个盘子3个塔.本题是要在后者的基础上来做. 设d[i]表示i盘3塔问题的最小移动 ...
- 【组合数学】递推方程 ( 递推方程示例 2 汉诺塔 | 递推方程示例 3 插入排序 )
文章目录 一.递推方程示例 2 汉诺塔 二.递推方程示例 3 插入排序 一.递推方程示例 2 汉诺塔 Hanoi 问题 : 递推方程为 : T(n)=2T(n−1)+1T(n) =2 T(n-1) + ...
- h0043. 奇怪的汉诺塔
汉诺塔问题,条件如下: 1.这里有A.B.C和D四座塔. 2.这里有n个圆盘,n的数量是恒定的. 3.每个圆盘的尺寸都不相同. 4.所有的圆盘在开始时都堆叠在塔A上,且圆盘尺寸从塔顶到塔底逐渐增大. ...
- 奇怪的汉诺塔 Four Column Hanoi Tower
奇怪的汉诺塔 题面 传送门 思路 首先考虑三个柱子的汉诺塔: 假设当前有 n n n个盘子: 先把前n-1个盘子从A柱移到B柱,然后把A柱上剩的那一个盘子移动到C柱最后把B柱上的那n-1个盘子移动到C ...
- hdu 2064汉诺塔III 递推
汉诺塔递推题,比汉诺塔多了一个限制条件,盘子只允许在相邻的柱子之间移动. 分析: 第1步:初始状态: 第2步:把上面的n-1个盘移到第3号杆上: 第3步:把第n个盘从1移到2: 第4步:把前n-1个从 ...
- 汉诺塔(河内之塔)相关题目
1. 标准汉诺塔 题目: 汉诺塔由三根柱子(分别用A.B.C表示)和n个大小互不相同的空心盘子组成.一开始n个盘子都摞在柱子A上,大的在下面,小的在上面,形成了一个塔状的锥形体. 对汉诺塔的一次合法的 ...
- C#游戏介绍大全,包括不限于(连连看、扫雷、推箱子、贪吃蛇、汉诺塔、消消乐、俄罗斯方块、飞机大战、坦克大战...)
文章目录 题目 WPF贪吃蛇(彩色版) 飞机大战 象棋 五子棋 1 连连看 2 黑白棋 3 汉诺塔 4 推箱子 5 扫雷 6七巧板 8 人物拼图1 9 人物拼图2 10 停车场游戏 11 坦克大战 1 ...
- HDU2077 汉诺塔IV【递推+打表】
汉诺塔IV Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- 【递推】HDU1207汉诺塔II 【汉诺塔及汉诺塔变形 归纳】
汉诺塔问题 设f(n)为移动n层的汉诺塔的解,则整个过程其实分为三步: 把n-1层移到第二个上面去(花费f(n-1)) 把最大的移到第三个柱子上面去(花费1) 把n-1层移动到第三个柱子上去(花费f( ...
最新文章
- C语言4行7列星星,如何使用C++循环语句实现星号塔5行每行分别是1,3,5,7,9个星星?...
- Photoshop剪切板故障修复
- linux代码环境配置,linux下配置环境变量【原创】(示例代码)
- 12_VersionedCollapsingMergeTree,Log Engine Family(Log引擎,StripeLog引擎,TinyLog引擎)
- [数论]拓展中国剩余定理
- 安装oracle未生成tnsnames.ora文件
- java 判断是否包含中文_java判断字符串中是否包含中文并过滤中文
- 什么?都2021年了还不会ajax嘛,来这里让您快速学会Ajax
- Hexo + GitHub搭建个人博客 --- Standard Edition
- Java大数运算(BigInteger BigDecimal)
- R. Shankar《Principles of Quantum Mechanics (2nd)》(山卡《量子力学原理(第二版)》)双语目录
- java 网吧计费系统_java网吧计费管理系统
- linux机顶盒 安卓机顶盒 优劣势分析,网络机顶盒怎么样 网络机顶盒优缺点介绍【详解】...
- html5 canvas花瓣,canvas花瓣飘落
- ArcBlock 将作证支持美国华盛顿州区块链立法 | ABT 活动
- matlab如何整理表格数据,数据整理的程序与步骤:包括数据预处理、分类或分组、图表显示...
- 【Phusion Passenger】应用服务器
- cad提取边界命令_cad如何提取文本的轮廓线
- 关于第四次财富狂潮的思考,区块链如猛虎出笼?
- 杭电计算机考研失败,2020杭电计算机考研感想