简单的汉诺塔问题解法代码

 更新时间:2013年03月03日 12:10:35   作者:  
汉诺塔本是C语言开门就学的东西,简单的汉诺塔问题解法代码

以前学东西不扎实,现在捡捡也好,汉诺塔本是C语言开门就学的东西,不过上课那会儿真心听不懂,直到大二了,才明白那是咋回事,我感觉的编程,真的是一张窗户纸,不过捅破要花时间理解吸收。

题目描述:有一个塔,塔内有A,B,C三个柱子。起初,A柱上有n个盘子,依次由大到小、从下往上堆放,要求将它们全部移到C柱上;在移动过程中可以利用B柱,但每次只能移到一个盘子,且必须使三个柱子上始终保持大盘在下,小盘在上的状态。要求编程输出移动的步骤。

代码如下:

复制代码 代码如下:

#include<stdio.h>
int move(char one,char two)//这个函数就是为了输出的结果直观显示出来,比如只有一个盘子时,输出a-->c. 就这样,把移动n个盘子每个步骤显示出来
{
    printf("%c --> %c\n",one,two);
}

int hanoi(int n,char one,char two,char three)//是核心函数了
{
    int move(char one,char two);
    if(n==1)//当只有一个盘子时,直接从a柱移到c柱就好,也是递归程序的一个出口
      move(one,three);
    else{   //盘子大于一时
        hanoi(n-1,one,three,two);//先借助c柱把上面的n-1个盘子从a柱全部移动到b柱
        move(one,three);           //这时a柱只剩下一个盘子了,移动到c柱即可
        hanoi(n-1,two,one,three);//将b柱剩下的n-1个盘子借助a柱移动到c柱,任务也就完成了
    }
}
int main()
{
    int n;
    char a,b,c;
    while(scanf("%d",&n)!=EOF)//可以输入多组数据检验结果
       hanoi(n,'a','b','c');
    }

相关文章

  • C语言结构体嵌套与对齐超详细讲解

    C语言结构体嵌套与对齐超详细讲解

    这篇文章主要介绍了C语言结构体嵌套与对齐,C语言中结构体是一种构造类型,和数组、基本数据类型一样,可以定义指向该种类型的指针。结构体指针的定义类似其他基本数据类型的定义
    2022-12-12
  • opencv利用霍夫变换检测直线进行图片校正

    opencv利用霍夫变换检测直线进行图片校正

    这篇文章主要为大家详细介绍了opencv利用霍夫变换检测直线对图片进行校正,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • C++自定义函数判断某年某月某日是这一年中第几天

    C++自定义函数判断某年某月某日是这一年中第几天

    这篇文章主要介绍了C++自定义函数判断某年某月某日是这一年中第几天的方法,涉及C++日期与时间操作相关技巧,需要的朋友可以参考下
    2016-06-06
  • C++中类的成员函数及内联函数使用及说明

    C++中类的成员函数及内联函数使用及说明

    这篇文章主要介绍了C++中类的成员函数及内联函数使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C/C++中#define的妙用分享

    C/C++中#define的妙用分享

    本文主要介绍了C++/C关于#define的一些妙用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • c语言之如何求e的近似值

    c语言之如何求e的近似值

    这篇文章主要介绍了c语言之如何求e的近似值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • C++ 中IO流详解

    C++ 中IO流详解

    这篇文章主要介绍了C++ IO流的相关知识点,文中有详细的代码,希望可以帮助大家更好的理解和学习c++,感兴趣的朋友可以了解下
    2023-05-05
  • C++链接器工作原理详解

    C++链接器工作原理详解

    当文件见过编译后就需要进行一个链接的操作接下来我们就说说什么是链接,本文给大家介绍了C++链接器是如何工作的,文章通过代码示例和图文介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • 基于Matlab制作一款简单的龙舟小游戏

    基于Matlab制作一款简单的龙舟小游戏

    这篇文章主要为大家介绍如何利用Matlab制作一款简单的龙舟小游戏,文中的示例代码讲解详细,对我们学习Matlab有一定帮助,需要的可以参考一下
    2022-03-03
  • C语言中字符的输入输出以及计算字符个数的方法详解

    C语言中字符的输入输出以及计算字符个数的方法详解

    这篇文章主要介绍了C语言中字符的输入输出以及计算字符个数的方法,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11

最新评论