汉诺塔问题
2015-12-01 16:51
267 查看
简单的说就是有A,B,C三个基座,要将A座上的盘子移动到B座,在移动的过程中3个基座上的盘子都必须保持大盘在下,小盘在上,可以利用C座做辅助。
记得大一的时候,怎么都不太懂,那个时候好像题目都没太读懂,然后不理解递归,就一直害怕这个。
我们把n个盘子抽象地看作是“两个盘子”,上面一个由1~n-1号组成,下面一个就是第n号盘子,移动过程如下:
1.先把上面一个盘子以A基座为起点借助B基座移动到C基座,
2.把下面一个盘子从A基座移动到B基座,
3.再把C基座上的一个盘子借助A基座移动到B基座。
记得大一的时候,怎么都不太懂,那个时候好像题目都没太读懂,然后不理解递归,就一直害怕这个。
我们把n个盘子抽象地看作是“两个盘子”,上面一个由1~n-1号组成,下面一个就是第n号盘子,移动过程如下:
1.先把上面一个盘子以A基座为起点借助B基座移动到C基座,
2.把下面一个盘子从A基座移动到B基座,
3.再把C基座上的一个盘子借助A基座移动到B基座。
#include<stdio.h> void hanoi(int n, char a,char b,char c); int main() { int n; scanf("%d", &n); hanoi(n, 'A', 'B', 'C'); } void hanoi(int n, char a, char b, char c) { if (n > 0) { hanoi(n - 1, a, c, b); printf("Move dish %d from pile %c to %c.\n", n, a, b); hanoi(n - 1, c, b, a); } }
相关文章推荐
- MySQL碎碎念
- 九度OJ 1352:和为S的两个数字 (查找)
- ubuntu14.04 安装五笔输入法(fcitx)
- IOS与服务器交互POST 和 GET
- 下拉多级菜单
- canvas 学习(一)
- JS中格式化日期
- The VM session was closed before any attempt to power it on.
- org.springframework.orm.hibernate3.support.OpenSessionInViewFilter详解
- Apache HttpClient调用Spring3 MVC Restful Web API演示
- java中的权限问题
- 九度OJ 1351:数组中只出现一次的数字 (位运算)
- Linux USB驱动数据结构
- [delve][web]如何实现网站顶部状态条的外部引用
- 《剑指offer》——把二叉树打印成多行
- 计算机组成原理实验四:时序系统
- 1-《电子入门趣谈》目录
- 一篇关于用户需求,己方产品(服务)与竞争对手的小清单
- 九度OJ 1351:数组中只出现一次的数字 (位运算)
- iOS-UI控件精讲之UIView