算法 -汉诺塔,哈夫曼编码

算法 -汉诺塔,哈夫曼编码_第1张图片

有三个柱子,分别为 from、buffer、to。需要将 from 上的圆盘全部移动到 to 上,并且要保证小圆盘始终在大圆盘上。

这是一个经典的递归问题,分为三步求解:

① 将 n-1 个圆盘从 from -> buffer

算法 -汉诺塔,哈夫曼编码_第2张图片

② 将 1 个圆盘从 from -> to 

 算法 -汉诺塔,哈夫曼编码_第3张图片

③ 将 n-1 个圆盘从 buffer -> to

算法 -汉诺塔,哈夫曼编码_第4张图片 

如果只有一个圆盘,那么只需要进行一次移动操作。

从上面的讨论可以知道,an = 2 * an-1 + 1,显然

你可能感兴趣的:(2023-FUSE-时代,java,算法,java,spring,boot)