本解法的思路是先使用 np.zeros((8,8),dtype=int) 生成8*8的二维数组,每行放一个皇后,放上皇后的位置值为1,否则为0。使用8个for循环来依次对每一行的皇后进行控制,在循环的过程中进行判断:如果该行皇后的位置与上一行的皇后的位置不在同一列,且不在其左下方或右下方,则进行下一行的循环,否则跳过这次循环。当循环进行到最里层时,判断所有的皇后中是否有皇后在同一列、是否在同一斜线。
定义判断函数
在这里我们定义两个函数,一个判断各个皇后是否处于同一列,一个判断是否在同一斜线。八行皇后的横坐标分别为i,j,k,l,m,n,o,p。下面是判断是否在同一列的函数:
def check_column(i, j, k, l, m, n, o, p):
if (i != k) & (i != l) & (i != m) & (i != n) & (i != o) & (i != p) & (j != l) & (
j != m) & (j != n) & (j != o) & (j != p) & (k != m) & (k != n) & (k != o) & (
k != p) & (l != n) & (l != o) & (l != p) & (m != o) & (m != p) & (n