Tower of Hanoi问题
来源:互联网 发布:二叉树的遍历算法结果 编辑:程序博客网 时间:2024/05/17 05:19
【问题描述】
有A, B, C三个塔座,A上套有n个直径不同的圆
盘,按直径从小到大叠放,形如宝塔,编号1, 2, 3 … n。
要求将n个圆盘从A移到C,叠放顺序不变,移动过程中遵循
下列原则:
w每次只能移一个圆盘
w圆盘可在三个塔座上任意移动
w任何时刻,每个塔座上不能将大盘压到小盘上
【解决方法】
n=1时,直接把圆盘从A移到C
有A, B, C三个塔座,A上套有n个直径不同的圆
盘,按直径从小到大叠放,形如宝塔,编号1, 2, 3 … n。
要求将n个圆盘从A移到C,叠放顺序不变,移动过程中遵循
下列原则:
w每次只能移一个圆盘
w圆盘可在三个塔座上任意移动
w任何时刻,每个塔座上不能将大盘压到小盘上
【解决方法】
n=1时,直接把圆盘从A移到C
n>1时,先把上面n-1个圆盘从A移到B,然后将n号盘从A移到C,再将n-1个盘从B移到C。即把求解n个圆盘的Hanoi问题转化为求解n-1个圆盘的Hanoi问题,依次类推,直至转化成只有一个圆盘的Hanoi问题
main( ){ int m; printf("Input number of disks”); scanf("%d",&m); printf(”Steps : %3d disks”,m); hanoi(m,'A','B','C'); }void hanoi(int n, char x, char y, char z) //x上的n个圆盘移到z上,y做辅助。{ if(n= =1) move(1, x, z);//1号盘从x移到Z else { hanoi(n-1, x, z, y);//n-1个从 x 到 y, z 辅助 move(n, x, z);//n号盘从 x 移到 z hanoi(n-1,y, x, z);//n-1个从 y 到z, x 辅助 }}
0 0
- Tower of Hanoi问题
- python 汉诺塔问题(Tower of Hanoi Puzzle)
- 递归解决 Tower of Hanoi 问题
- THE TOWER OF HANOI
- Tower of Hanoi
- Tower of Hanoi
- Tower of Hanoi
- codeforces Tower of Hanoi
- Tower of Hanoi
- 汉诺塔 Tower of Hanoi
- THE TOWER OF HANOI
- Hanoi Tower问题分析
- pku 3601 Tower of Hanoi
- 汉诺塔(the Tower of Hanoi )
- 1.1 The Tower of Hanoi
- poj 3601 Tower of Hanoi
- Tower of Hanoi by C++
- POJ 3601:Tower of Hanoi
- RequestAnimationFrame更好的实现Javascript动画
- 防反编译key
- java的confirm确认取消对话框
- Socket send函数和recv函数详解
- 【移动开发】自定义ProgressBar
- Tower of Hanoi问题
- 在spring中配置线程池
- 地图染色问题
- PL/SQL产生XML的encoding的值
- IOS开发学习笔记
- 农夫、狼、羊、菜问题
- Project Euler - 4
- office 2013 word 打开就停止响应解决办法
- [操作系统]Linux下php安装Redis安装