汉诺塔题解

首页 > 汉诺塔题解 > 列表

汉诺塔题解

题目: 汉诺塔由三根柱子(分别用A、B、C表示)和n个大小互不相同的空心盘子组成。一开始n个盘子都摞在柱子A上,大的在下面,小的在上面,形成了一个塔状的锥形体。 对汉诺塔的一次合法的操作是指:从一根柱子的最上层拿一个盘子放到另一根柱子的最上层,同时要保证被移动的盘子一定放在比它更大的盘子上面。

1.把A盘中的前N-1个盘子,凭借C盘移动到B盘

2.将A盘剩下的最底层那个移动到C盘,目前A盘为空

3.将B盘中的N-1个盘,凭借A盘移动到C盘

#include stdio.h

void hanoi(int n,char A,char B,char C)
{
    if(n==1)
        printf("Move sheet %d from  %c to %c \n",n,A,C);
    else
    {
       hanoi(n-1,A,C,B);  //把A盘中的前N-1个盘子,凭借C盘移动到B盘
       printf("Move sheet %d from %c to %c\n",n,A,C);  //将A盘剩下的最底层那个移动到C盘,目前A盘为空
       hanoi(n-1,B,A,C);  //将B盘中的N-1个盘,凭借A盘移动到C盘
    }
}



int main()
{
   int n;
   printf("请输入盘数: ");
   scanf("%d",n);
   hanoi(n,'A','B','C');
    return 0;
}