【递归与回溯算法】汉诺塔与八皇后问题详解

简介: 文章目录1 汉诺塔问题1.1 汉诺塔问题概述1.2 思路分析1.3 代码实现(Java)1.4 结果验证2 八皇后问题2.1 八皇后问题概述2.2 思路分析2.2.1 问题划分与分析2.2.2 涉及到的数据结构分析2.2.3 上下对角线与行列的关系2.3 代码实现(Java)2.4 结果验证

1 汉诺塔问题

1.1 汉诺塔问题概述

✈️ 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如图1)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。

1.2 思路分析

🍑 我们先在脑海里模拟一遍:假如 A杆处有从小到大的 2 个盘,我们需要怎么做呢?


将小盘由 A 杆移动到 B 杆; 即 A -> B;

将大盘由 A 杆移动到 C 杆;即 A -> C;

将小盘由 B 杆移动到 C 杆;即 B -> C;

模拟完成。

对于汉诺塔问题我们可以采用递归的思想解决问题,对递归有疑问的小伙伴可以看一下这篇文章:【JavaSE】深入浅出悟透递归


😗 我们将问题分为两种情况:

⭐️ star 1:A 杆只有 1 个盘


对于这种情况,我们只需要将 A 杆上的盘直接移动到 C 杆即可完成任务。


⭐️ star 2:A 杆有多个盘


对于多个盘我们可以看成两个部分,即上面的所有盘与最下面的盘


将上面的所有盘借助 C 杆 移动到 B;

将最下面的盘直接移动到 C 杆;

B 杆上面的盘继续借助 A 杆移动到 C 杆。


相关文章
|
1月前
|
机器学习/深度学习 算法
递归算法题练习(数的计算、带备忘录的递归、计算函数值)
递归算法题练习(数的计算、带备忘录的递归、计算函数值)
|
1月前
|
机器学习/深度学习 数据采集 监控
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
71 0
|
1月前
|
存储 缓存 算法
【数据结构与算法】【小白也能学的数据结构与算法】递归 分治 迭代 动态规划 无从下手?一文通!!!
【数据结构与算法】【小白也能学的数据结构与算法】递归 分治 迭代 动态规划 无从下手?一文通!!!
|
15天前
|
算法
算法系列--递归(一)--与链表有关(上)
算法系列--递归(一)--与链表有关
27 0
|
3月前
|
算法
【算法系列篇】递归、搜索和回溯(四)
【算法系列篇】递归、搜索和回溯(四)
|
1天前
|
算法
数据结构与算法-递归思想
数据结构与算法-递归思想
6 0
|
18天前
|
存储 算法 搜索推荐
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
|
1月前
|
存储 编解码 自然语言处理
【软件设计师备考 专题 】深入理解数据压缩、递归和图的相关算法
【软件设计师备考 专题 】深入理解数据压缩、递归和图的相关算法
64 0
|
1月前
|
算法
回溯算法练习题
回溯算法练习题
13 0
|
1月前
|
算法 Java 定位技术
【数据结构与算法】递归、回溯、八皇后 一文打尽!
【数据结构与算法】递归、回溯、八皇后 一文打尽!