参考:四柱加强版汉诺塔HanoiTower

1. 经典汉诺塔

思路分析:首先分析三根柱子的汉诺塔:将第i-1个盘子从a柱通过三根柱子移动到b柱,然后将最大的移动到c柱,最后又将i−1个盘子通过三根柱子移动到c柱。在这个过程中的操作次数为dp[i]=2×dp[i−1]+1。即,2^n-1。

2. 四柱加强版

题目传送门:2021 ICPC 江西省大学生程序设计竞赛 F题

1、用4柱汉诺塔算法把A柱上部分的n−r个碟子通过C柱和D柱移到B柱上【F(n−r)步】;
2、用3柱汉诺塔经典算法把A柱上剩余的r个碟子通过C柱移到D柱上【2^r −1步】(参照三柱时的情况);
3、用4柱汉诺塔算法把B柱上的n−r个碟子通过A柱和C柱移到D柱上【F(n−r)步】;
4、依据上边规则求出所有r (1≤r≤n)情况下步数f(n),取最小值得最终解。
因此可得状态转移方程:F(n)=min(2×F(n−r)+2^r −1), (1≤r≤n)

样例输入:
5
1
2
3
4
5
样例输出:
1
3
5
9
13
//因数据范围过大,用python比较方便,   10000 --> 374931278650296101567069263458900577819295745
ans = [0 for i in range(10010)]
a = [0 for i in range(10010)]def solve():n = int(input())print(ans[n])def init():ans[1],ans[2],ans[3] = 1,3,5a[1],a[2],a[3] = 2,4,8cnt = 1for i in range(4,10001):ans[i] = ans[i - cnt] * 2 + a[cnt] - 1a[i] = 2 * a[i - 1]if(ans[i] > ans[i - cnt - 1] * 2 + a[cnt + 1] - 1):cnt += 1ans[i] = ans[i - cnt] * 2 + a[cnt] - 1if __name__ == "__main__":init()t = int(input())while t:solve()t -= 1

汉诺塔问题(含四柱加强版)相关推荐

  1. java汉诺塔(含汉诺塔问题的详解)

    目录 一:汉诺塔问题 二:汉诺塔问题思路 三:图示化思路 四:代码展示 一:汉诺塔问题 汉诺塔问题是一个经典的问题.汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说.大梵天创造世界的 ...

  2. 四柱加强版汉诺塔HanoiTower----是甜蜜还是烦恼

    我想很多人第一次学习递归的时候,老师或者书本上可能会举汉诺塔的例子. 但是今天,我们讨论的重点不是简单的汉诺塔算法,而是三柱汉诺塔的延伸.先来看看经典的三柱汉诺塔. 一.三柱汉诺塔(Hanoi_Thr ...

  3. 四柱汉诺塔 -- 动态规划求解最优移动次数

    自己用Java写了一个前台进行四柱汉诺塔的移动演示,是按照最优次序进行移动的,链接里有详细的代码实现:https://download.csdn.net/download/qq_40285036/10 ...

  4. 多柱汉诺塔最优算法设计探究

    多柱汉诺塔最优算法设计探究   引言 汉诺塔算法一直是算法设计科目的最具代表性的研究问题,本文关注于如何设计多柱汉诺塔最优算法的探究.最简单的汉诺塔是三个柱子(A.B.C),因此多柱汉诺塔的柱子个数M ...

  5. 汉诺塔——python递归

    一.什么是汉诺塔? 汉诺塔问题是法国数学家编写的一个印度古老传说,简单来说就是:寺院里有三根柱子,第一根摞着64个盘子,从上到下盘子越来越大.方丈要求小和尚把64个盘子全部移动到第三根柱子上,在移动的 ...

  6. java递归实现汉诺塔

    汉诺塔的规则是:一共三根柱子,一根柱子从上到下套着有小到大的若干个圆盘,要将所有圆盘按照这个排放顺序移动到第三根柱子上,并且每次只能移动一个圆盘. 可以将整个过程分为三个步骤来看: 第一步:将除最大圆 ...

  7. 汉诺塔(Hanoi)问题归纳总结

    一.汉诺塔问题及其递归算法 1.问题阐述 经典汉诺塔: 外文算法书对汉诺塔问题的描述: 2.算法步骤 三阶汉诺塔问题解题步骤 共需7步. 四阶汉诺塔问题解题步骤 共需15步 五阶汉诺塔问题解题步骤 可 ...

  8. hdu 1207 汉诺塔II (四柱汉诺塔)

    思路是借鉴网上一大牛的,写的很完美了,所以一句没改,代码是自己敲的,C语言版 变体汉诺塔 问题描述:在经典汉诺塔的基础上加一个条件,即,如果再加一根柱子(即现在有四根柱子a,b,c,d),计算将n个盘 ...

  9. 三柱汉诺塔四柱汉诺塔

    汉诺塔问题_哔哩哔哩_bilibili 三柱汉诺塔,从整体来看,分为三部 1.先让n-1个盘先由a柱放在b柱 2.把第n个盘由a柱放在c柱 3.将这n-1个盘由b柱移动到c柱 而其中的递归过程就是直到 ...

最新文章

  1. android在控制台签名apk
  2. 工业界和学术界的思考
  3. Thinking in C++ Notes 常量
  4. 实战经验:关于Oracle Delete数据后空间重用问题的测试
  5. 数据湖应用解析:Spark on Elasticsearch一致性问题
  6. 人人都可以写贪吃蛇(白话javascript版)
  7. Talib技术因子详解(十)
  8. DES、3DES、AES以及RSA加密介绍
  9. 读书行动笔记2013第2本:《整理的艺术》
  10. STM32+ESP8266 AT测试、透传、DHT11、APP操作以及源代码
  11. 英语六级-day10
  12. git拉取代码报错update_ref failed for ref ‘ORIG_HEAD‘:cannot lock ref ‘ORIG_HEAD‘
  13. [Hadoop in China 2011] 朱会灿:探析腾讯Typhoon云计算平台
  14. 民生银行java面试_民生银行面试题目 是什么?
  15. DataMining——孤立点:落在高于Q1 或低于Q3 的1.5IQR的位置
  16. 基于华为高端NAS存储双活的POC测试
  17. 在移动端单行文本在不同的屏幕下当文本过长时增加省略号效果
  18. Python配置清华软件安装源
  19. sigmoid和softmax区别
  20. 腾讯云轻量级应用服务器的配置搭建及网站

热门文章

  1. 你知道物联网感知识别层有哪些技术吗?
  2. Python事件调度器定时任务sched
  3. js获取id后添加html代码,js获取Id的方法getElementById与$的由来和用Id判断元素是否存在及批量动态获取 Id...
  4. cad怎么导出为图片?转换渠道选择
  5. 开源并不是大牛的专属,普通人也能有属于自己的一亩三分地
  6. 苹果手机计算机按键会想关掉哪里,iphone11怎么关机?iphone11关机键是哪个?
  7. 樊登读书赋能读后感_樊登即兴演讲读后感,脱稿演讲与即兴演讲读后感,即兴演讲读后感...
  8. pr剪辑打开多个项目_pr入门使用教程之——新建项目
  9. Glib学习(22) 主事件循环 The Main Event Loop
  10. asp.net+sqlserver网上出租车预约系统设计与实现