简单的汉诺塔问题解法代码
2018-10-12 14:09
477 查看
以前学东西不扎实,现在捡捡也好,汉诺塔本是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');
}
您可能感兴趣的文章:
相关文章推荐
- 递归解决汉诺塔问题解法java代码
- 最简单的0-1背包问题c++代码实例及运行结果
- 两段超简单jquery代码解决iframe自适应高度问题(不用判断浏览器高度)
- 汉诺塔问题解法
- Exercise(4):01背包(简单动规)问题的两种解法
- Java使用递归法解决汉诺塔问题的代码示例
- 最简单的0-1背包问题c++代码实例及运行结果
- 一段简单C++代码问题分析
- WPF textBox中简单处理文字滚动显示问题,另外用代码去边框
- 字符串包含问题的求解(最简单的方法——只有两行代码)
- 隐马尔科夫模型,第三种问题解法,维比特算法(biterbi) algorithm python代码
- 八数码问题 解的存在性证明以及解法分析(附代码)
- 一类简单数位统计问题的记忆化搜索解法
- python解决汉诺塔问题极其简单
- 最简单的0-1背包问题c++代码实例及运行结果
- 约瑟夫环问题的简单解法(数学公式法)
- C# 汉诺塔问题简单演示
- java最简单(没有之一)的找周期串问题(总共10行代码)离经但不叛道
- 汉诺塔问题的递归解法
- 最简单的0-1背包问题c++代码实例及运行结果