汉诺塔

来源:互联网 发布:淘宝如何开话费充值 编辑:程序博客网 时间:2024/04/29 10:33

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;}


1 0