codevs[3145]汉诺塔游戏
汉诺塔问题(又称为河内塔问题),是一个大家熟知的问题。在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,求出最少步数的移动序列
一个整数n
第一行一个整数k,代表是最少的移动步数。
接下来k行,每行一句话,N from X to Y,表示把N号盘从X柱移动到Y柱。X,Y属于{A,B,C}
3
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
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]汉诺塔游戏相关推荐
- 3145 汉诺塔游戏
题目描述 Description 汉诺塔问题(又称为河内塔问题),是一个大家熟知的问题.在A,B,C三根柱子上,有n个不同大小的圆盘(假设半径分别为1-n吧),一开始他们都叠在我A上(如图所示),你的 ...
- python汉诺塔游戏_Python实战:搭建汉诺塔小游戏,快和小伙伴一起玩玩吧
汉诺塔游戏:看谁能在短时间内将排好顺序的圈,按同样的顺放在另一根柱子上,每次只能动一个. 今天用python搭建汉诺塔小游戏(简约版) 代码亲测有效!源代码如下: #左中右塔用一个列表存储 left ...
- 【使用递归玩通关汉诺塔游戏】算法01-递归(斐波那契数列、汉罗塔问题)-java实现
递归 定义:在一个方法(函数)的内部调用该方法(函数)本身的编程方式 简而言之就是 "自己调自己" 在玩游戏之前让我们先对递归有一个简单的了解吧! 5.1 递归简介 递归必须有一个 ...
- Py:递归求解汉诺塔,简单的几行编程可以搞定很高层的三柱汉诺塔游戏
Py:递归求解汉诺塔,简单的几行编程可以搞定很高层的三柱汉诺塔游戏 目录 输出结果 核心代码 输出结果 核心代码 def hanoi(n,x,y,z):if n==1:print(x,'--→',z) ...
- 汉诺塔游戏的python实现——递归函数
汉诺塔游戏python实现 def move(n, a, b, c): if n == 1: print('move', a, '-->', c) else: move(n-1, a, c, b ...
- Python案例:汉诺塔游戏
Python案例:汉诺塔游戏 游戏规则: (1)一次只能移动一个环 (2)小环必须在大环之上
- CCF NOI1070 汉诺塔游戏
问题链接:CCF NOI1070 汉诺塔游戏. 时间限制: 1000 ms 空间限制: 262144 KB 题目描述 汉诺塔由编号为1到n大小不同的圆盘和三根柱子a,b,c组成,编号越小盘子越小.开 ...
- 要理解递归,得先理解递归--用Java语言由浅入深讲解汉诺塔游戏
2019独角兽企业重金招聘Python工程师标准>>> 一.递归是什么? 定义:程序调用自身的编程技巧称为递归.它分为调用阶段和回退阶段,递归的回退顺序是它调用顺序的逆序. 递归使用 ...
- 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) ...
最新文章
- Zabbix 3.2.6 通过SNMP和iDRAC监控DELL服务器
- VS2010 ASP.NET MVC4 安装失败问题
- Ubuntu 启动自动登录
- python哲学内容 多行胜于单行_Python3基础 __doc__ 单行与多行函数文档
- ORACLE 如何产生一个随机数
- javascript map 排序_1Keys仅用1 kb的JavaScript制作钢琴
- 【C语言】编译预处理和宏(附带##介绍)
- paip.数据库发邮件通知配置
- 【产品经验谈】详解Axure中的默认元件库
- eve-ng 添加dynamips镜像文件
- 黑马程序员—-C语言入门十重奏之十renascence
- Motion-based counter-measures to photo attacks in face recognition
- Android P GPS信号模拟
- 我是谁,没有绝对安全的系统
- 手披云雾开鸿蒙,描写泰山的诗句不是整首诗、注明作者
- Java 第十一次作业
- linux SIGABRT信号
- 取得平均薪水最高的部门的部门名称
- 传感器系列之4.7地磁传感器
- AtCoder Grand Round 012B Splatter Painting
热门文章
- 小程序 云数据库 .field 赋值
- GEE(1):GEE 影像去云(Sentinel-2)
- 住在储藏室的小夫妻【zt】
- 【Pycharm教程】PyCharm 配置 Python 项目运行和调试
- 大数据打通信息孤岛也要保护隐私
- 【基于stm32f103C8T6-小程序智能家居项目实战-自绘PCB到实现功能一条龙+30分钟解决-各种bug已修复】
- MySQL 存储 IP 地址
- 分享google+facebook+twitter(Eclipse)
- 超棒的NFS文档-来自chinaunix,讲到的NFS的几乎所有方面,包括版本、参数设定等...
- Effective Java (3rd Editin) 读书笔记:1 创建和销毁对象