时间限制: 1 s
 空间限制: 32000 KB
 题目等级 : 白银 Silver

题解
题目描述 Description

汉诺塔问题(又称为河内塔问题),是一个大家熟知的问题。在A,B,C三根柱子上,有n个不同大小的圆盘(假设半径分别为1-n吧),一开始他们都叠在我A上(如图所示),你的目标是在最少的合法移动步数内将所有盘子从A塔移动到C塔。

游戏中的每一步规则如下:

1. 每一步只允许移动一个盘子(从一根柱子最上方到另一个柱子的最上方)

2. 移动的过程中,你必须保证大的盘子不能在小的盘子上方(小的可以放在大的上面,最大盘子下面不能有任何其他大小的盘子)

如对于n=3的情况,一个合法的移动序列式:

1 from A to C

2 from A to B

1 from C to B

3 from A to C

1 from B to A

2 from B to C

1 from A to C

给出一个数n,求出最少步数的移动序列

输入描述 Input Description

一个整数n

输出描述 Output Description

第一行一个整数k,代表是最少的移动步数。

接下来k行,每行一句话,N from X to Y,表示把N号盘从X柱移动到Y柱。X,Y属于{A,B,C}

样例输入 Sample Input

3

样例输出 Sample Output

7

1 from A to C

2 from A to B

1 from C to B

3 from A to C

1 from B to A

2 from B to C

1 from A to C

数据范围及提示 Data Size & Hint

n<=10

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
int n;
using namespace std;
void move(int n,char A,char C,char B)
{if(n==0)return;if(n==1)cout<<n<<" "<<"from"<<" "<<A<<" "<<"to"<<" "<<C<<endl;else{move(n-1,A,B,C);cout<<n<<" "<<"from"<<" "<<A<<" "<<"to"<<" "<<C<<endl;move(n-1,B,C,A);}
}
int f(int n)
{if(n==1)return 1;if(n==2)return f(1)*2+1;else if(n>2)return f(n-1)*2+1;
}
using namespace std;
int main()
{cin>>n;cout<<f(n)<<endl;move(n,'A','C','B');return 0;
}

此题链接

codevs[3145]汉诺塔游戏相关推荐

  1. 3145 汉诺塔游戏

    题目描述 Description 汉诺塔问题(又称为河内塔问题),是一个大家熟知的问题.在A,B,C三根柱子上,有n个不同大小的圆盘(假设半径分别为1-n吧),一开始他们都叠在我A上(如图所示),你的 ...

  2. python汉诺塔游戏_Python实战:搭建汉诺塔小游戏,快和小伙伴一起玩玩吧

    汉诺塔游戏:看谁能在短时间内将排好顺序的圈,按同样的顺放在另一根柱子上,每次只能动一个. 今天用python搭建汉诺塔小游戏(简约版) 代码亲测有效!源代码如下: #左中右塔用一个列表存储 left ...

  3. 【使用递归玩通关汉诺塔游戏】算法01-递归(斐波那契数列、汉罗塔问题)-java实现

    递归 定义:在一个方法(函数)的内部调用该方法(函数)本身的编程方式 简而言之就是 "自己调自己" 在玩游戏之前让我们先对递归有一个简单的了解吧! 5.1 递归简介 递归必须有一个 ...

  4. Py:递归求解汉诺塔,简单的几行编程可以搞定很高层的三柱汉诺塔游戏

    Py:递归求解汉诺塔,简单的几行编程可以搞定很高层的三柱汉诺塔游戏 目录 输出结果 核心代码 输出结果 核心代码 def hanoi(n,x,y,z):if n==1:print(x,'--→',z) ...

  5. 汉诺塔游戏的python实现——递归函数

    汉诺塔游戏python实现 def move(n, a, b, c): if n == 1: print('move', a, '-->', c) else: move(n-1, a, c, b ...

  6. Python案例:汉诺塔游戏

    Python案例:汉诺塔游戏 游戏规则: (1)一次只能移动一个环 (2)小环必须在大环之上

  7. CCF NOI1070 汉诺塔游戏

    问题链接:CCF NOI1070 汉诺塔游戏. 时间限制: 1000 ms  空间限制: 262144 KB 题目描述 汉诺塔由编号为1到n大小不同的圆盘和三根柱子a,b,c组成,编号越小盘子越小.开 ...

  8. 要理解递归,得先理解递归--用Java语言由浅入深讲解汉诺塔游戏

    2019独角兽企业重金招聘Python工程师标准>>> 一.递归是什么? 定义:程序调用自身的编程技巧称为递归.它分为调用阶段和回退阶段,递归的回退顺序是它调用顺序的逆序. 递归使用 ...

  9. python玩汉诺塔游戏攻略

    def hanio(n,x,y,z):'汉诺塔游戏攻略'if n == 1:print('%s-->%s'%(x,z))else:#将n-1个从x放到y上 借助zhanio(n-1,x,z,y) ...

最新文章

  1. Zabbix 3.2.6 通过SNMP和iDRAC监控DELL服务器
  2. VS2010 ASP.NET MVC4 安装失败问题
  3. Ubuntu 启动自动登录
  4. python哲学内容 多行胜于单行_Python3基础 __doc__ 单行与多行函数文档
  5. ORACLE 如何产生一个随机数
  6. javascript map 排序_1Keys仅用1 kb的JavaScript制作钢琴
  7. 【C语言】编译预处理和宏(附带##介绍)
  8. paip.数据库发邮件通知配置
  9. 【产品经验谈】详解Axure中的默认元件库
  10. eve-ng 添加dynamips镜像文件
  11. 黑马程序员—-C语言入门十重奏之十renascence
  12. Motion-based counter-measures to photo attacks in face recognition
  13. Android P GPS信号模拟
  14. 我是谁,没有绝对安全的系统
  15. 手披云雾开鸿蒙,描写泰山的诗句不是整首诗、注明作者
  16. Java 第十一次作业
  17. linux SIGABRT信号
  18. 取得平均薪水最高的部门的部门名称
  19. 传感器系列之4.7地磁传感器
  20. AtCoder Grand Round 012B Splatter Painting

热门文章

  1. 小程序 云数据库 .field 赋值
  2. GEE(1):GEE 影像去云(Sentinel-2)
  3. 住在储藏室的小夫妻【zt】
  4. 【Pycharm教程】PyCharm 配置 Python 项目运行和调试
  5. 大数据打通信息孤岛也要保护隐私
  6. 【基于stm32f103C8T6-小程序智能家居项目实战-自绘PCB到实现功能一条龙+30分钟解决-各种bug已修复】
  7. MySQL 存储 IP 地址
  8. 分享google+facebook+twitter(Eclipse)
  9. 超棒的NFS文档-来自chinaunix,讲到的NFS的几乎所有方面,包括版本、参数设定等...
  10. Effective Java (3rd Editin) 读书笔记:1 创建和销毁对象