汉诺塔游戏

本文详细介绍了汉诺塔游戏的规则,并提出了最小移动次数将所有盘子从A柱移动到C柱的解决方案。关键在于通过递归算法,先将较小的盘子通过B柱移动到C柱,然后移动最大的盘子,最后再将剩余的盘子从B柱经A柱移动到C柱。递归终止条件是当盘子数量为1时,直接移动。
摘要由CSDN通过智能技术生成

汉诺塔游戏

描述

汉诺塔由编号为1到n且大小不同的圆盘和3根柱子a,b,c组成,编号越小,盘子越小。开始时,这n个圆盘由大到小依次套在a柱上,如图1.3所示。要求把a柱上n个圆盘按下述规则移到c柱上:

(1)一次只能移一个圆盘,它必须位于某个柱子的顶部,

(2)圆盘只能在三个柱子上存放。

(3)任何时刻不允许大盘压小盘。

将这n个盘子用最少移动次数从a柱移动到c柱上,输出每一步的移动方法。

输入

只有1行,一个整数n(1<=n<=20),表示盘子的数量。

输出

输出若干行,每行的格式是:“步数.Move盘子编号from源柱to目标柱”

输入样例 1 

3

输出样例 1

1. Move 1 from a to c
2. Move 2 from a to b 
3. Move 1 from c to b
4. Move 3 from a to c
5. Move 1 from b to a
6. Move 2 from b to c
7. Move 1 from a to c

提示

分析提示:

如何移动才能使得移动次数最少,考虑1到n这n个盘子哪个盘子先移到c盘的目标位置?显然是n

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值