一、简介
二、基本步骤
三、算法设计模式
四、分治算法实例:汉诺塔
演示:将盘子移动至C塔
1、只有一个盘子时
A到C,一步到位即可。
2、有两个盘子时
三步走。
- 将A塔上面的所有盘移动到B塔;
- 将A塔下面的盘子移动到C塔;
- 把B塔的盘子移动到C塔。
第一步: 将A塔上面的所有盘移动到B塔;
第二步:将A塔下面的盘子移动到C塔;
第三步:把B塔的盘子移动到C塔。
3、有三个盘子时
一样的思路:
- 将A塔上面的所有盘移动到B塔;
- 将A塔下面的盘子移动到C塔;
- 把B塔的盘子移动到C塔。
第一步:将A塔上面的所有盘移动到B塔;
第二步:将A塔下面的盘子移动到C塔;
第三步:把B塔的盘子移动到C塔。
4、有四个盘子时
一样的思路:
- 将A塔上面的所有盘移动到B塔;
- 将A塔下面的盘子移动到C塔;
- 把B塔的盘子移动到C塔。
第一步:经简单的几步移动,将A塔上面的所有盘移动到B塔;
第二步:将A塔下面的盘子移动到C塔;
第三步:把B塔的盘子移动到C塔。
思路分析:
不仅仅是这个汉诺塔问题,遇到别的问题时,怎么分解,自己思想很重要。有了思想,再转换成代码。当这些代码能解决一类问题时,它便有了新的名字——算法!
代码:
测试:5个盘子
没得任何问题。