汉诺塔

1.      汉诺塔问题:

设有三个塔座,依次命名为X,Y,Z,设n个直径不同的圆盘,从小到大依次编号为1,2,3,…….n。开始时,它们全部按递减的次序插在塔座上。现要求按下列规则把n个圆盘按次序插放在Z塔座上。

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

(2)      圆盘可以从任一个塔座上移到另一个塔座上;

(3)      任何时刻都不能把一个较大的圆盘压在较小的圆盘上。

#include<cstdio>
using namespace std;
void han(int n,char a,char b,char c)
{
    if(n==1){
        printf("%c->%c\n",a,c);
        return;
    }
    han(n-1,a,c,b);
    printf("%c->%c\n",a,c);
    han(n-1,b,a,c);
}
int main()
{
    int n;
    scanf("%d",&n);
    han(n,'A','B','C');
    return 0;
}



 

posted @ 2016-04-15 19:29  keshuqi  阅读(161)  评论(0编辑  收藏  举报