用python实现八皇后问题(简易版,无复杂函数或语法)

数据结构与算法 之 python实现——算法源码

 

用python实现八皇后问题(简易版,无复杂函数或语法)

python 版本:3.7.5

八皇后问题的全代码在下面了,里面有比较详细的注释方便大家理解。下面讲解一些个人认为比较重要的点:

 

一、 整体思路

该算法用到了两类矩阵,第一类是place,用于存放queen的位置,有queen的位置标记为1,其他位置标记为0;第二类是flag_col, flag_d1, flag_d2(下边有详细讲解),用于记录棋盘上哪些位置可以被已有的queen攻击到(即不能再放置其他的queen),可以放置标记为1,不可以放置标记为0。这两个矩阵的含义就是,如果在一点放置了queen,就将place中相应的位置标记为1;相应的如果放置了queen,就会有新的点不能放置queen,因此需要更新flag_col, flag_d1, flag_d2(三个矩阵分别存放queen能攻击到的列、从左上到右下的斜线、从右上到左下的斜线)。

有了以上矩阵的理解,算法思路如下:

从上往下逐行进行检验,若发现第n行某一点可以放置queen,就放置,然后同样方式处理下一行(n+1行),即在n+1行找到可行的位置放置queen;

若第n行的这个点不能放置,则检验该行的下一个点。

若第n行所有的点都不能放置,则退回到上一行(n-1行),检验上一行(n-1行࿰

你可能感兴趣的:(python,算法,数据结构)