1.题目:
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。
输入:4
输出:[
[".Q..", // 解法 1
"...Q",
"Q...",
"..Q."],
["..Q.", // 解法 2
"Q...",
"...Q",
".Q.."]
]
解释: 4 皇后问题存在两个不同的解法。
2.代码:
class Solution:
def solveNQueens(self, n: int) -> List[List[str]]:
def initBoard(n,arr):
b = []
for i in range(n):
k = arr[i]
b.append('.'*k+'Q'+'.'*(n-k-1))
return b
def check(arr,n,depth,i):#(depth,i)
for k in range(depth):
if arr[k] == i or abs(arr[k]- i) == depth -k:
return False
return True
def dfs(arr,res,n,depth):
if depth == n:
res.append(initBoard(n,arr))
return
for i in range(n):
if check(arr,n,depth,i):
arr[depth] = i
dfs(arr,res,n,depth+1)
res = []
arr = [-1]*n
dfs(arr,res,n,0)
return res