数据结构与算法(七)
来源:互联网 发布:妍霓丝黄金水知乎 编辑:程序博客网 时间:2024/06/07 02:18
递归的高级应用
1. 汉诺塔的问题
所有的盘子刚开始都放在塔座A上,要求将所有的盘子从塔座A移动到塔座C上,每次只能移动一个盘子,任何盘子不能放在比自己小的盘子上。
2. 移动子树
例:起始五个盘子在A,中间为B,需要移到C;可以首先将上边四个移动到B,则A就剩一个,只需一步A→C;问题变为起始四个盘子在B,中间为A,需要移动到C;可以先考虑把上边三个盘子移动到A,则B就剩一个,只需一步B→C;问题变为起始三个盘子在A,中间为B,需要移动到C。。。最终一个盘子在A,中间为B,需要移动到C,只需一步A→C。
3. 递归解决
汉诺塔递归
public class HanoiTower {/* * 移动盘子 * topN:移动的盘子数 * from:起始塔座 * inter:中间塔座 * to:目标塔座 */public static void doTower(int topN,char from,char inter,char to){if(topN==1){System.out.println("盘子1,从"+from+"塔座到"+to+"塔座");}else{doTower(topN-1,from,to,inter);System.out.println("盘子"+topN+",从"+from+"塔座到"+to+"塔座");doTower(topN-1,inter,from,to);}}}
测试:
public class TestHanoiTower {public static void main(String[] args) {// TODO Auto-generated method stubHanoiTower.doTower(3, 'A', 'B', 'C');}}
0 0
- 数据结构与算法(七)
- 数据结构与算法(七):常见数据结构与算法概括
- 数据结构与算法之七归并排序
- 算法与数据结构之七----顺序队列
- 数据结构与算法之七 栈
- 数据结构与算法·实验七
- 数据结构与算法之七(划分算法与快速排序)
- 学习JavaScript数据结构与算法(七)——散列表(一)
- 学习JavaScript数据结构与算法(七)——散列表(二)
- <七>java数据结构与算法 栈 实现单词逆序
- 数据结构与算法之散列(分离链接法)<七>
- Java数据结构与算法分析《七》递归的高级应用
- 直通BAT--数据结构与算法七(二叉树)
- 数据结构与程序架构(七)
- 数据结构与程序架构(七)
- 数据结构与算法-基础数据结构(链表)
- (数据结构与算法分析 七)------优先队列中的二叉堆的实现( Java语言描述)
- 我的软考之路(七)——数据结构与算法(5)之查找
- 《深入分析JavaWeb技术内幕》读书笔记四.I/O调优
- js初始化时间的方法
- 四月英语总结——《坚不可摧》
- 强制 pkill redis 后,flushdb 命令报错的解决办法
- 4.29 SSM项目实战(二)--秒杀系统api之Service层
- 数据结构与算法(七)
- android studio 菜单中的app运行按钮上有个叉号,原因与解决办法
- 【FastDFS】——基本概念
- Redis key 设计技巧
- 高通 8x26 andorid light sensor(TSL258x) 开发
- 七层学习
- php-redis扩展编译
- Redis持久化配置
- 《现代操作系统》笔记