题解 | #N皇后问题#
N皇后问题
https://www.nowcoder.com/practice/c76408782512486d91eea181107293b6
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param n int整型 the n
# @return int整型
#
class Solution:
def Nqueen(self , n: int) -> int:
# write code here
def isValid(pos, row, col):
for i in range(row):
if i == row or col == pos[i] or abs(row-i) == abs(col-pos[i]):
return False
return True
def backtrack(n, row, pos, res):
if row == n:
res += 1
return res
for i in range(n):
if isValid(pos, row, i):
pos[row] = i
res = backtrack(n, row+1, pos, res)
return res
res = 0
pos = [0]*n
return backtrack(n, 0, pos, res)
- 当行数等于n的时候,说明遍历完成了,得到一组解,结果数加一;
- 否则遍历每一个位置,如果当前位置行列对角没有其他元素,则修改pos[row]值为当前列的值,表示该位置已经确认过了;
- 之后递归进行下一行的比较。

