zoukankan      html  css  js  c++  java
  • C语言实现汉诺塔

    汉诺塔

    要把A柱子上的盘子移动到C柱子上,在移动过程中可以借助B柱子,但是要求小的盘子在上大的盘子在下。

    解题思路:

    1、把A柱子上的前N-1个盘子借助C柱子,全部移动到B柱子上(过程暂不考虑),再把第N个盘子由A柱子移动到C柱子上。

    那么剩下要移动的盘子在B柱子上了。

    2.把B柱子上的前N-2个盘子借助C柱子,全部移动到A柱子上(过程暂不考虑),再把第N-1个盘子由B柱子移动到C柱子上。

    重复上面的两个步骤即可把A柱子上的盘子全部移动到C柱子上。

     算法实现:

    #include <stdio.h>
    
    int num=0;//统计移动次数3
    void hanio(int n,char a,char b,char c){    //n是盘的个数 A,B,C为三个放盘的塔
            if(n==1){
                num++;                                // 移动一次加一次
                printf("第%d次 %c-->%c\n",num,a,c);    //打印A移动到C
            }else{
                hanio(n-1,a,c,b);                    //n-1次 A通过C移动到B
                num++;                                // 移动一次加一次
                printf("第%d次 %c-->%c\n",num,a,c);  //打印A移动到C
                hanio(n-1,b,a,c);                    //n-1次 B通过A移动到C
            }
        }
    int main() {
        int n=3;
        hanio(n,'A','B','C');
    }
  • 相关阅读:
    CSS之链接
    CSS之文本
    CSS之定位
    django 第四天
    django第三天
    django 第二天
    django第一天
    国庆贺礼
    珂朵莉树(ODT)笔记
    20190927
  • 原文地址:https://www.cnblogs.com/easyidea/p/10102446.html
Copyright © 2011-2022 走看看