测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A57. Hanoi 双塔问题

编程题 普及/提高-
知识点

题目描述

给定$A$、$B$、$C$三根足够长的细柱,在$A$柱上放有$2n$个中间有孔的圆盘,共有$n$个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为$n=3$的情形)。


![](/uploads/acgo/image/3ed644d2c8ef5739_9ddb1a73b059.png)


现要将这些圆盘移到$C$柱上,在移动过程中可放在$B$柱上暂存。要求:

(1)每次只能移动一个圆盘;

(2)$A$、$B$、$C$三根细柱上的圆盘都要保持上小下大的顺序;

任务:设$A_n$为$2n$个圆盘完成上述任务所需的最少移动次数,对于输入的$n$,输出$A_n$。

输入格式

一个正整数$n$,表示在$A$柱上放有$2n$个圆盘。

输出格式

一个正整数, 为完成上述任务所需的最少移动次数$A_n$。

输入输出样例

输入 #1
1
输出 #1
2
输入 #2
2
输出 #2
6

说明/提示

【限制】

对于$50\%$的数据,$1 \le n \le 25$

对于$100\%$的数据,$1 \le n \le 200$

【提示】

设法建立$A_n$与$A_{n-1}$的递推关系式。
上一题 去做题 下一题