手机
当前位置:查字典教程网 >编程开发 >C语言 >简单的汉诺塔问题解法代码
简单的汉诺塔问题解法代码
摘要:以前学东西不扎实,现在捡捡也好,汉诺塔本是C语言开门就学的东西,不过上课那会儿真心听不懂,直到大二了,才明白那是咋回事,我感觉的编程,真的是...

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

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

代码如下:

复制代码 代码如下:

#include<stdio.h>

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

{

printf("%c --> %cn",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');

}

【简单的汉诺塔问题解法代码】相关文章:

error LNK2019: 无法解析的外部符号 问题的解决办法

C++关键字typename的深入理解

生成随机数rand函数的用法详解

关于C语言指针赋值的问题详解

C++ 创建桌面快捷方式 开始菜单的实现代码

C++结构体数组详细解析

基于C语言sprintf函数的深入理解

C++中strtok()函数的用法介绍

数据结构课程设计- 解析最少换车次数的问题详解

简单说说STL的内存管理

精品推荐
分类导航