先看几个经典的算法面试题

八皇后问题

八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。【92】

使用到回溯算法

高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种计算机语言可以解决此问题

image_1

马踏棋盘算法

马踏棋盘算法介绍和游戏演示 马踏棋盘算法也被称为骑士周游问题 将马随机放在国际象棋的8×8棋盘Board[0~7][0~7]的某个方格中,马按走棋规则(马走日字)进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格 游戏演示: http://www.4399.com/flash/146267_2.htm

会使用到图的深度优化遍历算法(DFS) + 贪心算法优化

image_2

马踏棋盘游戏代码实现

  • 1)马踏棋盘问题(骑士周游问题)实际上是图的深度 优先搜索(DFS)的应用。
  • 2)如果使用回溯(就是深度优先搜索)来解决,加 入马儿踏了53个点,如图:走到了第53个,坐标 (1,0) ,发现已经走到尽头,没办法,那就只能 回退了,查看其他的路径,就在棋盘上不停的回 .....效率很低,
  • 3)因此需要使用贪心算法( greedyalgorithm)进行 优化。我们直接使用贪心算法优化思路来解决马 踏棋盘问题.
  • 4)马踏棋盘问题思路分析+代码实现
  • 5)使用前面的游戏来验证算法是否正确。

哔哩哔哩动画


results matching ""

    No results matching ""