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

 更新时间: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++,感兴趣的朋友可以了解下
    2020-08-08
  • 详解C++编程中类的声明和对象成员的引用

    详解C++编程中类的声明和对象成员的引用

    这篇文章主要介绍了详解C++编程中类的声明和对象成员的引用,是C++入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • C++基础入门教程(二):数据、变量、宏等

    C++基础入门教程(二):数据、变量、宏等

    这篇文章主要介绍了C++基础入门教程(二):数据、变量、宏等,本文讲解了变量初始化、宏定义、三种进制数的表示、const初探、auto声明等内容,需要的朋友可以参考下
    2014-11-11
  • 数据结构 红黑树的详解

    数据结构 红黑树的详解

    这篇文章主要介绍了数据结构 红黑树的详解的相关资料,数据结构中的二叉树查找,红黑树的讲解,需要的朋友可以参考下
    2017-07-07
  • C++中vector和map的删除方法(推荐)

    C++中vector和map的删除方法(推荐)

    下面小编就为大家带来一篇C++中vector和map的删除方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • STL list链表的用法详细解析

    STL list链表的用法详细解析

    这篇文章是关于C++语言的一个新的扩展——标准模板库的(Standard Template Library),也叫STL
    2013-09-09
  • 浅谈C++中virtual的三种用法

    浅谈C++中virtual的三种用法

    这篇文章主要介绍了浅谈C++中virtual的三种用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 在c和c++中实现函数回调

    在c和c++中实现函数回调

    如何在c和c++中实现函数回调呢?现在小编就和大家分享一下在c/c++中实现函数回调的示例代码,需要的朋友可以参考下
    2013-07-07
  • C指针原理教程之编译原理-小型计算器实现

    C指针原理教程之编译原理-小型计算器实现

    本文给大家分享的是如何使用C语言编写一个小型计算器的实例代码,有需要的小伙伴可以参考下
    2019-02-02
  • C语言学生成绩管理系统小设计

    C语言学生成绩管理系统小设计

    这篇文章主要为大家详细介绍了C语言学生成绩管理系统小设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01

最新评论