zoukankan      html  css  js  c++  java
  • 汉诺塔问题

    /*有n个盘子,都在A上,盘子大小均不等,要求大的在下,小的在上,
    有A, B, C三个地方,要求将这n个盘子从A移动到C处,每次只能移动
    一个盘子*/
    
    /*思路:
            当有两个盘子时,只需将1个盘子从A移动到B,便可直接将最后一个
            盘子移动到C,然后将上一个盘子移动到B,结束任务;依此类推,对于
            n个盘子,只需将上面n-1个盘子借助C移动到B,再将第n个盘子移动到C,最后
            将那n-1个盘子借助A移动到C,便可完成任务*/
    #include<stdio.h>
    void hannoi(int n, char A, char B, char C)
    {
        if(n == 1)
            printf("move dish %d from %c to %c
    ",n, A, C);
        else
        {
            hannoi(n - 1, A, C, B); /*将第n个盘子上面n-1个盘子借助C移动到B*/
            printf("move dish %d from %c to %c
    ",n, A, C);
            hannoi(n - 1, B, A, C);      /*将留在B上的n-1个盘子借助A移动到C*/
        }
    }
    int main()
    {
        int n;
        while(scanf("%d",&n) != EOF)
        {
            printf("The steps:
    ");
            hannoi(n, 'A', 'B', 'C');
        }
    }
    
  • 相关阅读:
    js问题记录
    css问题记录
    vscode配置java+gradle开发环境
    js插件
    nginx笔记
    vue刷新当前路由
    koa踩坑记录
    react踩坑笔记
    ts踩坑笔记
    vue源码阅读笔记
  • 原文地址:https://www.cnblogs.com/KeepZ/p/11143800.html
Copyright © 2011-2022 走看看