C语言-汉诺塔
来源:互联网 发布:网络视频主持人 编辑:程序博客网 时间:2024/05/28 05:14
汉诺塔问题:
有A,B,C三根柱子,现往A上放n个盘子(小盘子在大盘子上面),求如何借助B柱将A上所有盘子移到C上,移动过程中大盘子不能再小盘子上面并且每次只能移动一个,输出移动步骤。
问题分析:
如图,我们可将n个盘子分成两部分,上面(n-1)个为1,最下面的单独为2。至此,将所有盘子移动到C柱只需3个步骤:
1.将1移到B柱。
2.将2移到C柱。
3.再将1从B柱移到C柱。
要将1移动到B柱,可继续将1分成两部分,上面(n-2)个为1-1,第(n-1)个为1-2。所以接下来应:
1.将1-1移到B柱。
2.将1-2移到C柱。
3.再将1-1移从B柱移到C柱。
以此类推,可以推至3个的情况,A-->B,A-->C,B-->C。
至此,发现递归规律,大功告成。
代码如下:
#include <stdio.h>void move(int n,char A, char B, char C){ if(n == 1) printf("%c --> %c\n",A, C); else { move(n-1,A,C,B); move(1,A,B,C); move(n-1,B,A,C); }}int main(){ int n = 4; move(n,'A','B','C'); return 0;}
n = 4 时运行截图:
The End
阅读全文
0 0
- 汉诺塔C语言实现
- C 语言 ---- 汉诺塔算法
- 汉诺塔(c语言实现)
- c语言汉诺塔问题
- 【C语言】递归 - 汉诺塔
- 汉诺塔ix C语言
- C语言实现汉诺塔
- C语言-汉诺塔
- 汉诺塔的C语言实现
- 动态汉诺塔(c语言)
- 汉诺塔(hanoi) C语言实现
- c语言解决汉诺塔问题
- C语言汉诺塔--递归算法
- c语言 解决汉诺塔问题
- 汉诺塔解法C语言实现
- 汉诺塔——C语言
- C语言编程之汉诺塔
- C语言
- springboot(十六):使用Jenkins部署Spring Boot
- GitHub贡献统计显示
- C# 合并Dictionary
- 【第十周】项目1-层次遍历算法的验证
- 体验 Scala 2.12 支持的 Java 8 风格(SAM) Lambda
- C语言-汉诺塔
- iOS 广告轮播图的实现
- 第十一周-项目三-图的遍历
- 个人oracle复习
- zigbee学习笔记(二) 开发环境
- 2017第二十三届上海国际加工包装展览会会刊(参展商名录)
- sublime 按 tab 键,想使用缩进却自动补全?
- QT中文乱码
- Palindrome Number--LeetCode