您的位置:首页 > 编程语言 > Python开发

51. N-Queens Leetcode Python

2015-02-20 06:53 405 查看
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.



Given an integer n, return all distinct solutions to the n-queens puzzle.

Each solution contains a distinct board configuration of the n-queens' placement, where 
'Q'
 and 
'.'
 both
indicate a queen and an empty space respectively.

For example,

There exist two distinct solutions to the 4-queens puzzle:
[
[".Q..",  // Solution 1
"...Q",
"Q...",
"..Q."],

["..Q.",  // Solution 2
"Q...",
"...Q",
".Q.."]
]

这题的解法和前面一题N queen II 一样,规则是两个queen不能再同一个行,列或者diagnal 所以每个循环里面有 board[i]!=j abs(k-i)!=abs[board[i]-j]

其他的是常规的dfs解法
代码如下:
class Solution:
# @return a list of lists of string
def solveNQueens(self, n):
def check(k,j,board):
for i in range(k):
if board[i]==j or abs(k-i)==abs(board[i]-j):
return False
return True
def dfs(depth,board,valuelist,solution):
#for i in range(len(board)):
if depth==len(board):
solution.append(valuelist)
for row in range(len(board)):
if check(depth,row,board):
s='.'*len(board)
board[depth]=row
dfs(depth+1,board,valuelist+[s[:row]+'Q'+s[row+1:]],solution)
board=[-1 for i in range(n)]
solution=[]
dfs(0,board,[],solution)
return solution
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode python dfs