|
|
|
|
分治法也许是最广泛使用的算法设计方法,其基本思想是把大问题的解分解成一些较小的问题,然后由小问题的解方便地构造出大问题的解。
|
|
|
|
Hanoi塔问题描述如下:有n个盘子在A处,盘子从大到小,最上面的盘子最小。现在要把这n个盘子从A处搬到C处,可以在B处暂存,但任何时候都不能出现大的盘子压在小的盘子上面的情况。
|
|
|
当只有一个盘子时,直接从A移到C即可;如果已知n-1个盘子的移动方案,那么n个盘子的移动方案如下:先把前n-1个盘子从A借助C移动到B处,再把第n个盘子从A处直接移动到C处,然后再将B处的n-1个盘子从B处借助A处移动到C处,至此就完成了全部盘子的移动。具体C代码实现如下:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|