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

 更新时间: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语言 数据类型占多少字节指针占多少字节的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Linux中使用VS Code编译调试C++项目详解

    Linux中使用VS Code编译调试C++项目详解

    最近因为项目的需求,需要在Linux下开发C++相关项目,经过一番摸索最终实现了,下面这篇文章就给大家简单总结了一下如何通过VS Code进行编译调试的一些注意事项。有需要的朋友们可以参考借鉴,下面来跟着小编一起看看吧。
    2016-12-12
  • C语言学生成绩管理系统课程设计word版

    C语言学生成绩管理系统课程设计word版

    这篇文章主要为大家详细介绍了C语言学生成绩管理课程设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • 一道超经典的C++结构体的题目

    一道超经典的C++结构体的题目

    以下小编就为大家介绍一道超经典的关于C++结构体的题目。需要的朋友可以过来参考下
    2013-09-09
  • C++ odr用法案例详解

    C++ odr用法案例详解

    这篇文章主要介绍了C++ odr用法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • QT实现多文件拖拽获取路径的方法

    QT实现多文件拖拽获取路径的方法

    这篇文章主要为大家详细介绍了QT实现多文件拖拽获取路径的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • C++虚函数表和虚析构介绍

    C++虚函数表和虚析构介绍

    这篇文章主要介绍了C++虚函数表和虚析构,虚函数表是C++实现多态的基础,多态是面向对象的三大特性之一,下面文章我们一起来看看详细内容,需要的朋友可以参考一下
    2021-11-11
  • c语言实现两个值互相交换的函数

    c语言实现两个值互相交换的函数

    本文通过代码给大家介绍c语言实现两个值互相交换的函数,通过实例代码给大家讲解的很详细,具有一定的参考借鉴价值,对c语言两个值互换函数相关知识感兴趣的朋友一起看看吧
    2021-05-05
  • C语言判断数是否为素数与素数输出

    C语言判断数是否为素数与素数输出

    大家好,本篇文章主要讲的是C语言判断数是否为素数与素数输出,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • C语言分支循环其嵌套语句的使用

    C语言分支循环其嵌套语句的使用

    本文主要介绍了switch 嵌套和循环嵌套,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11

最新评论