ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

汉诺塔题解

2021-02-23 16:33:43  阅读:16  来源: 互联网

标签:int 题解 hanoi C盘 汉诺塔 盘子 移动


题目: 汉诺塔由三根柱子(分别用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;
}

  

标签:int,题解,hanoi,C盘,汉诺塔,盘子,移动
来源: https://www.cnblogs.com/ITduange/p/14436772.html

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有