汉诺塔加强版
这是汉诺塔1的升级版。 大梵天创造世界的时候做了三根金刚石柱子(A,B,C),在A柱子上从下往上按照大小顺序摞着n片黄金圆盘。大梵天命令啊仁把圆盘从下面开始按大小顺序重新摆放在C柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 大梵天想为难啊仁,不想让他那么早去约会,于是想让他说出每一步的操作。 大梵天对圆盘从上到下进行编号1~n,啊仁要说出每步的操作,x from xx to xx,(具体见样例)在说出每步操作之前,需要说出至少几步能完成任务。
输入格式:
输入第一行为一个整数n(2<=n<=20)。
输出格式:
输出一个n为最快能用几次移动完成任务。 接下来n行格式为x from xx to xx表示次的操作。行末无空格。
输入样例:
2
输出样例:
3
1 from A to B
2 from A to C
1 from B to C
# include<stdio.h>
# include<math.h>
int k,n;
void mov(int n,char a,char c,char b){
if(n==0) return ;
mov(n-1,a,b,c);
printf("%d from %c to %c\n" ,n, a,c);
mov(n-1,b,c,a);
}
int h[110];
int main(){
int z;
scanf("%d",&n);
z=pow(2,n)-1;
printf("%d\n",z);
mov(n,'A','C','B');
return 0;
}