汉诺塔是一个经典问题,相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置n个金盘。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。 汉诺塔以及其衍生问题往往使用递归来求解,也是学习和理解递归很好的老师。 其伪代码如下 Function Hanoi(n,a,b,c) if n==1 then print(a+'-'+c) else Hanoi(n-1,a,c,b) print(a+'-'+c) Hanoi(n-1,b,a,c) end if end Function 牛牛很快就理解了代码的意思并且写出了求解汉诺塔的程序,他现在想研究汉诺塔的规律。 请你统计以下信息:A-B,A-C,B-A,B-C,C-A,C-B的次数,以及所有移动的总步数。
输入描述:
仅一行,输入一个正整数n表示汉诺塔的层数。


输出描述:
首先输出6行A-B:XXA-C:XXB-A:XXB-C:XXC-A:XXC-B:XX分别表示每种移动情况出现的次数最后输出一行SUM:XX表示所有移动情况的总和。
示例1

输入

3

输出

A->B:1
A->C:3
B->A:1
B->C:1
C->A:0
C->B:1
SUM:7

说明

伪代码所示算法的移动序列如下:
A->C
A->B
C->B
A->C
B->A
B->C
A->C
统计:
A->B出现1次
A->C出现3次
B->C出现1次
B->A出现1次
C->B出现1次
总计7次
加载中...