题目分析:
这个题与我之前写的八皇后问题是基本一致的,它换了输出格式,其实用一个一维数组(元组)就能表示,比如[“.Q…”,”…Q”,“Q…”,”…Q.”]可表示为[1,3,0,2]。Python使用元组+递归简单解决八皇后问题这个博客就是使用这种方法,而且注释非常详细,下面的这个代码的思路是一样的,不明白可以多看看这篇博客。
测试代码:
class Solution:
def solveNQueens(self, n):
def check(k, j):
for i in range(k):
if board[i] - j == 0 or k-i == abs(board[i]-j):
return False
return True
def dfs(depth, valuelist):
if depth==n: res.append(valuelist); return
for i in range(n):
if check(depth,i):
board[depth]=i
s='.'*n
dfs(depth+1, valuelist+[s[:i]+'Q'+s[i+1:]])
board=[-1 for i in range(n)]
res=[]
dfs(0,[])
return res
print(Solution().solveNQueens(4)) #提交时请删除该行