问题描述
在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,输出所有摆法。
思路
每个皇后都不处于同一行、一列,可以用一维数组来表示皇后的位置,如a[0]=3表示皇后在第一行第四列,用一维数组可以保证皇后不会在同一行中。
判断冲突,如果同列,数组中的元素会有平相同,如果同斜线,2皇后位置的列差绝对值等于行差绝对值,用这种计算判断皇后是否在同一斜线上。
代码
def check(board,row,col):
i = 0
while i < row:
if