zoukankan      html  css  js  c++  java
  • (TOJ1483)C语言实验题——汉诺塔

    描述

    汉诺塔(又称河内塔)问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒A、B和C,A上面套着n个圆的金片, 最大的一个在底下,其余一个比一个小,依次叠上去, 庙里的众僧不倦地把它们一个个地从A棒搬到C棒上,规定可利用中间的一根B棒作为帮助, 但每次只能搬一个, 而且大的不能放在小的上面。 僧侣们搬得汗流满面,可惜当n很大时这辈子恐怕就很搬了 聪明的你还有计算机帮你完成,你能写一个程序帮助僧侣们完成这辈子的夙愿吗?

    输入

    输入金片的个数n。这里的n<=10。

    输出

    输出搬动金片的全过程。格式见样例

    样例输入

    2

    样例输出

    Move disk 1 from A to B
    Move disk 2 from A to C
    Move disk 1 from B to C
     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<ctype.h>
     4 #include<math.h>
     5 
     6 void move(int n, char x, int y)
     7 {
     8     printf("Move disk %d from %c to %c\n",n,x,y);
     9     
    10 }
    11 
    12 void hanoi(int n, char A, char B, char C)
    13 {
    14   if(n==1)
    15       move(1,A,C);
    16   else{
    17       hanoi(n-1,A,C,B);
    18       move(n,A,C);
    19       hanoi(n-1,B,A,C);
    20   }
    21 }
    22 
    23 void solve()
    24 {
    25   int n;
    26   scanf("%d",&n);
    27   hanoi(n,'A','B','C');
    28 }
    29 
    30 int main()
    31 {
    32     solve();
    33     return 0;
    34 }
     
    作者:xueda120
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    窗口设置背景图片
    双链表
    单链表
    Hough直线检测
    轮廓跟踪
    轮廓提取
    基于腐蚀的二值图像距离变换
    创建对话框用于交互
    hello world
    c#---params参数
  • 原文地址:https://www.cnblogs.com/xueda120/p/3088808.html
Copyright © 2011-2022 走看看