2430 - 新汉诺塔
时间限制 : 3 秒
内存限制 : 128 MB
设有n个大小不等的中空圆盘,按从小到大的顺序从1到n编号。将这n个圆盘任意的迭套在三根立柱上,立柱的编号分别为A,B,C,这个状态称为初始状态。现在要求找到一种步数最少的移动方案,使得从初始状态转变为目标状态。移动时有如下要求:一次只能移一个盘;不允许把大盘移到小盘上面。
输入
第一行一个整数,状态中圆盘总数n。
接下来三行每行若干个整数,分别代表初始状态下A,B,C柱子上的圆盘从下到上的编号,如果只有一个数0就代表这根柱子上没有数。
接下来三行每行若干个整数,分别代表目标状态下A,B,C柱子上的圆盘从下到上的编号,如果只有一个数0就代表这根柱子上没有数。
输出
一行一个整数,代表从初始状态到目标状态的最少步数。
样例
输入
5 3 3 2 1 2 5 4 0 1 2 3 5 4 3 1 1
输出
move 1 from A to B move 2 from A to C move 1 from B to C move 3 from A to B move 1 from C to B move 2 from C to A move 1 from B to C 7
提示
【输出样例说明】
盘子的顺序如下所示:
move 1 from A to B
move 2 from A to C
move 1 from B to C
move 3 from A to B
move 1 from C to B
move 2 from C to A
move 1 from B to C
共7步。
【数据规模与约定】
对于100%的数据,1≤n≤45,1≤每个圆盘的编号≤n。
每行的圆盘描述是从下到上的圆盘编号。