#737. 汉诺塔(hanoi.cpp)
汉诺塔(hanoi.cpp)
Description
汉诺塔游戏:在一块铜板装置上有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置n个金盘。游戏的目标是把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。规定每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上。
现在Alice想让你告诉他从杆A移动到杆B的次数、杆A移动到杆C的次数、杆B移动到杆A的次数、杆B移动到杆C的次数、杆C移动到杆A的次数以及杆C移动到杆B的次数。
Format
Input
第一行一个整数K,代表有K组数据。接下来K行每行一个正整数N表示汉诺塔的层数。
Output
对于每个输入,输出如下6行。分别代标从一个杆移动到另一个杆的次数Xi
A->B:X1
A->C:X2
B->A:X3
B->C:X4
C->A:X5
C->B:X6
Samples
1
5
A->B:4
A->C:9
B->A:6
B->C:4
C->A:2
C->B:6
3
14
3
9
A->B:3643
A->C:1825
B->A:1818
B->C:3643
C->A:3636
C->B:1818
A->B:1
A->C:3
B->A:1
B->C:1
C->A:0
C->B:1
A->B:58
A->C:117
B->A:112
B->C:58
C->A:54
C->B:112
Limitation
对于30%的数据:k=1, 1<=n<=20。
对于100%的数据:1<= k, n<=20。