【LeetCode】51. N-Queens 解题报告(Python)

题目分析:

这个题与我之前写的八皇后问题是基本一致的,它换了输出格式,其实用一个一维数组(元组)就能表示,比如[".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))	#提交时请删除该行

参考博客1,参考博客2

你可能感兴趣的:(python,递归,LeetCode,LeetCode题目记录)