题目链接

Problem Description
约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下、由小到大顺序串着由64个圆盘构成的塔。目的是将最左边杆上的盘全部移到右边的杆上,条件是一次只能移动一个盘,且不允许大盘放在小盘的上面。
现在我们改变游戏的玩法,不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允许大盘放到下盘的上面。
Daisy已经做过原来的汉诺塔问题和汉诺塔II,但碰到这个问题时,她想了很久都不能解决,现在请你帮助她。现在有N个圆盘,她至少多少次移动才能把这些圆盘从最左边移到最右边?
Input
包含多组数据,每次输入一个N值(1<=N=35)。
Output
对于每组数据,输出移动最小的次数。
Sample Input
1
3
12

Sample Output
2
26
531440
题解:递归理解,先将n-1个盘从左移到中间再到右,将第n个盘移到中间,然后前n-1个盘移到中间再到左,再将第n个盘移动到右,最后前n-1个盘移到中间再到右。也就是说前n-1个盘要移动三次,第n个盘要移动两次,所以f(n)=3*f(n-1)+2,当n==1的时候,返回2.
#include <cstdio>
#include <iostream>
#include <string>
#include <sstream>
#include <cstring>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
#include <map>
#define PI 3.1415926
#define ms(a) memset(a,0,sizeof(a))
#define msp memset(mp,0,sizeof(mp))
#define msv memset(vis,0,sizeof(vis))
using namespace std;
//#define LOCAL
int a[100005],b[100005];
long long fun(int n)
{if(n==1)return 2;return 3*fun(n-1)+2;
}
int main()
{
#ifdef LOCALfreopen("in.txt", "r", stdin);
#endif // LOCAL//Startint n;while(cin>>n){long long ans=fun(n);printf("%I64d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/gpsx/p/5178413.html

HDU 2064 汉诺塔III(递归)相关推荐

  1. HDU——2064汉诺塔III

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

  2. HDU 2064:汉诺塔III

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

  3. hdu 2064汉诺塔III 递推

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

  4. 汉诺塔III HDU - 2064

    汉诺塔III HDU - 2064 约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下.由小到大顺序串着由64个圆盘构成的塔.目的是将最左边杆上的盘全部移到右边的 ...

  5. 汉诺塔III 汉诺塔IV 汉诺塔V

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

  6. 数据结构与算法—递归算法(从阶乘、斐波那契到汉诺塔的递归图解)

    目录 递归介绍 递归求阶乘 递归求斐波那契 递归解决汉诺塔 总结 递归介绍 递归:就是函数自己调用自己. 子问题须与原始问题为同样的事,或者更为简单: 递归通常可以简单的处理子问题,但是不一定是最好的 ...

  7. 【恋上数据结构】递归(函数调用过程、斐波那契数列、上楼梯、汉诺塔、递归转非递归、尾调用)

    递归(Recursion) 什么是递归? 函数的调用过程(栈空间) 函数的递归调用过程 递归实例分析(1 + 2 + 3 + ... + 100 的和) 递归的基本思想.使用套路 斐波那契数列 fib ...

  8. 汉诺塔的递归逐步详解

    文章目录 汉诺塔介绍 递归代码实现 以三个盘子为例逐步详解 汉诺塔介绍 如上图,有三根柱子A,B,C,在A柱子上有N个盘子(图上只画了三个),利用这三根柱子和N个盘子进行汉诺塔游戏,需要最终将A柱子上 ...

  9. 汉诺塔问题 [递归 + 抽象]

    汉诺塔 前言 一.题意 二.抽象思维 1.源码 三.扩展 1.分析 2.源码 总结 参考文献 前言 汉诺塔问题,是学习递归的第一个算法题,也是非常经典的递归问题.由于它是双递归问题,所以初学时不易理解 ...

最新文章

  1. mysql计算某一天所在周或月的第一天和最后一天
  2. mysql set语句_不得不注意!那些容易被忽视的MySQL字符集问题?
  3. android弹幕开发,android弹幕框架
  4. bootstrap 开源框架demo_5 个接私活必备的 Java 开源项目!
  5. sql server数据表转换成xml
  6. Haproxy相关概念解析
  7. python自动机器学习库auto_ml模块
  8. java测试用例怎么写_Java测试用例编写规则
  9. 这一年,这些书:2020年读书笔记
  10. NAT(地址转换技术)详解
  11. 二手房各项税费计算公式
  12. Sklearn聚类算法之Affinity Propagation
  13. 碰撞、子弹路径、参考
  14. Android 源码 PackageManagerService 启动流程分析
  15. 【软件硬件】精简指令集和复杂指令集的区别
  16. 资产监测设备中GPS的C/N0和SNR的关系
  17. 电信运营商云计算战略和发展现状
  18. 怎样把k歌作品发到html里,如何将自己的原创歌曲上传入库到全民K歌
  19. VirtualBox中安装懒人版macOS Mojave黑苹果系统
  20. latch和DFF的区别和联系

热门文章

  1. H5 audio 音频标签自定义样式修改以及添加播放控制事件
  2. OpenCV+Mediapipe+UDP+Unity挥手电子书翻页
  3. 内网穿透--DevOps学习番外
  4. 提高电脑运行速度有高招
  5. 4.5 游戏效果 - Gameplay Effects
  6. java注释符与注释内容不要有空格_#java课程#初见java--注释,关键字,标识符
  7. css:a:visited限制
  8. 远程桌面使用linux,在Windows 系统下使用远程桌面连接Linux 系统主机的方法
  9. idea git同步项目(Update Project)时,不小心勾选了不再显示更新项目的提示弹窗(Do not show this dialog in the future)
  10. HTML使用标签、链接完成电视剧简介