博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3145 汉诺塔游戏
阅读量:4483 次
发布时间:2019-06-08

本文共 1739 字,大约阅读时间需要 5 分钟。

题目描述 
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

题目描述 
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
#include
using namespace std;void hanoi(int k,char a,char b,char c){ if (k==1) cout<
<<" from "<
<<" to "<
<
>n; for (int i=1;i<=n;i++) ans[i]=2*ans[i-1]+1; cout<
<

 

 

转载于:https://www.cnblogs.com/sjymj/p/5190246.html

你可能感兴趣的文章
jsp听课笔记(四)
查看>>
vim
查看>>
数组的键/值操作函数
查看>>
Android单点触控与多点触控切换的问题解决方案
查看>>
JS常用函数与方法
查看>>
十、Shell基础
查看>>
py16 面向对象深入
查看>>
CentOS 7 安装 Gitlab
查看>>
JavaScript-03-常见函数
查看>>
ajax 设置Access-Control-Allow-Origin实现跨域访问
查看>>
去掉ExpandableListView的箭头图标
查看>>
[LeetCode]Binary Tree Level Order Traversal II
查看>>
跨页面传值自动刷新 操作文本与文件夹
查看>>
最完美的毁尸灭迹:皮箱连环弃尸案始末
查看>>
002
查看>>
WCF服务“*”有零个应用程序(非基础结构)终结点。这可能是因为未找到应用程序的配置文件,或者在配置文件中未找到与服务名称匹配的服务元素,或者服务元素中未定义终结点。...
查看>>
cocos2d 读书随笔《cocos2d-x游戏开发技术精讲》
查看>>
Asterisk 代码架构概述
查看>>
中兴电信光纤猫F450获取管理员密码方法
查看>>
申请TexturePacker 或 PhysicsEditor free licenses
查看>>