这是一道很经典的问题。


先看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. 奇怪的汉诺塔【递推】相关推荐

  1. 《算法竞赛进阶指南》打卡-基本算法-AcWing 96. 奇怪的汉诺塔:递推

    文章目录 题目解答 题目链接 题目解答 来源:acwing 分析: 本题的汉诺塔问题是n个盘子4个塔,最基本的汉诺塔是n个盘子3个塔.本题是要在后者的基础上来做. 设d[i]表示i盘3塔问题的最小移动 ...

  2. 【组合数学】递推方程 ( 递推方程示例 2 汉诺塔 | 递推方程示例 3 插入排序 )

    文章目录 一.递推方程示例 2 汉诺塔 二.递推方程示例 3 插入排序 一.递推方程示例 2 汉诺塔 Hanoi 问题 : 递推方程为 : T(n)=2T(n−1)+1T(n) =2 T(n-1) + ...

  3. h0043. 奇怪的汉诺塔

    汉诺塔问题,条件如下: 1.这里有A.B.C和D四座塔. 2.这里有n个圆盘,n的数量是恒定的. 3.每个圆盘的尺寸都不相同. 4.所有的圆盘在开始时都堆叠在塔A上,且圆盘尺寸从塔顶到塔底逐渐增大. ...

  4. 奇怪的汉诺塔 Four Column Hanoi Tower

    奇怪的汉诺塔 题面 传送门 思路 首先考虑三个柱子的汉诺塔: 假设当前有 n n n个盘子: 先把前n-1个盘子从A柱移到B柱,然后把A柱上剩的那一个盘子移动到C柱最后把B柱上的那n-1个盘子移动到C ...

  5. hdu 2064汉诺塔III 递推

    汉诺塔递推题,比汉诺塔多了一个限制条件,盘子只允许在相邻的柱子之间移动. 分析: 第1步:初始状态: 第2步:把上面的n-1个盘移到第3号杆上: 第3步:把第n个盘从1移到2: 第4步:把前n-1个从 ...

  6. 汉诺塔(河内之塔)相关题目

    1. 标准汉诺塔 题目: 汉诺塔由三根柱子(分别用A.B.C表示)和n个大小互不相同的空心盘子组成.一开始n个盘子都摞在柱子A上,大的在下面,小的在上面,形成了一个塔状的锥形体. 对汉诺塔的一次合法的 ...

  7. C#游戏介绍大全,包括不限于(连连看、扫雷、推箱子、贪吃蛇、汉诺塔、消消乐、俄罗斯方块、飞机大战、坦克大战...)

    文章目录 题目 WPF贪吃蛇(彩色版) 飞机大战 象棋 五子棋 1 连连看 2 黑白棋 3 汉诺塔 4 推箱子 5 扫雷 6七巧板 8 人物拼图1 9 人物拼图2 10 停车场游戏 11 坦克大战 1 ...

  8. HDU2077 汉诺塔IV【递推+打表】

    汉诺塔IV Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  9. 【递推】HDU1207汉诺塔II 【汉诺塔及汉诺塔变形 归纳】

    汉诺塔问题 设f(n)为移动n层的汉诺塔的解,则整个过程其实分为三步: 把n-1层移到第二个上面去(花费f(n-1)) 把最大的移到第三个柱子上面去(花费1) 把n-1层移动到第三个柱子上去(花费f( ...

最新文章

  1. C语言4行7列星星,如何使用C++循环语句实现星号塔5行每行分别是1,3,5,7,9个星星?...
  2. Photoshop剪切板故障修复
  3. linux代码环境配置,linux下配置环境变量【原创】(示例代码)
  4. 12_VersionedCollapsingMergeTree,Log Engine Family(Log引擎,StripeLog引擎,TinyLog引擎)
  5. [数论]拓展中国剩余定理
  6. 安装oracle未生成tnsnames.ora文件
  7. java 判断是否包含中文_java判断字符串中是否包含中文并过滤中文
  8. 什么?都2021年了还不会ajax嘛,来这里让您快速学会Ajax
  9. Hexo + GitHub搭建个人博客 --- Standard Edition
  10. Java大数运算(BigInteger BigDecimal)
  11. R. Shankar《Principles of Quantum Mechanics (2nd)》(山卡《量子力学原理(第二版)》)双语目录
  12. java 网吧计费系统_java网吧计费管理系统
  13. linux机顶盒 安卓机顶盒 优劣势分析,网络机顶盒怎么样 网络机顶盒优缺点介绍【详解】...
  14. html5 canvas花瓣,canvas花瓣飘落
  15. ArcBlock 将作证支持美国华盛顿州区块链立法 | ABT 活动
  16. matlab如何整理表格数据,数据整理的程序与步骤:包括数据预处理、分类或分组、图表显示...
  17. 【Phusion Passenger】应用服务器
  18. cad提取边界命令_cad如何提取文本的轮廓线
  19. 关于第四次财富狂潮的思考,区块链如猛虎出笼?
  20. 杭电计算机考研失败,2020杭电计算机考研感想

热门文章

  1. IDE之Jupyter:交互式文档Jupyter Notebook简介、安装、使用方法详细攻略
  2. 《疯狂Java讲义》8
  3. 洛谷 - P1433 - 吃奶酪 - dfs
  4. 【解决办法】Oracle登录报错ORA-28000: the account is locked
  5. 在mac上搭建octopress+github pages博客
  6. 262K Color
  7. Linux杂项设备驱动
  8. 共识协议(3)比特币之POW
  9. C++ Primer 5th笔记(chap 17 标准库特殊设施)regex_replace
  10. Hyperledger Besu(2)隐私