汉诺塔
两层汉诺塔的演示
三层汉诺塔的走法演示
我不知道有没有朋友跟我一样有一个疑问,如果我们顶端的先放到中间柱子呢?...但是实际上汉诺塔问题解决方案都是最优解,我们不走弯路,我们的目的性非常强,我们最终目的都是移动到c,所以我们可以先让顶端的木块直接到c
解题思路:
不妨将这个问题拆解,n个汉诺塔,我们可以把最底下最大那个看成单独的一个...,上面的(n - 1)个,看成一个整体.这样子最底下那个可以直接从 A 移动到 C,剩下上面的 ( n - 1 ) 个汉诺塔我们可以先从A 通过 C 移动到 B ....这样子不断进行递归,问题规模就可以逐层减小....需要注意的是,这种递归实现虽然简单易懂,但是时间复杂度为指数级别的,所以不能用于大规模的数据处理。