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
indicate a queen and an empty space respectively.
For example,
There exist two distinct solutions to the 4-queens puzzle:
这题的解法和前面一题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
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 51. N-Queens--Python实现
- [leetcode]N-Queens II @ Python
- [leetcode]N-Queens @ Python
- leetcode-51-N-Queens
- LeetCode(51) N-Queens
- Leetcode51 N-Queens
- [Leetcode 91] 51 N-Queens
- LeetCode 51: N-Queens
- [leetcode] 51.N-Queens
- [LeetCode 51&52] N-Queens I & II (N皇后问题)
- LeetCode 51 N-Queens
- 【LeetCode with Python】 N-Queens
- 52. N-Queens II Leetcode Python
- leetcode[51]N-Queens
- LeetCode_51---N-Queens
- LeetCode 51. N-Queens
- [leetcode 51] N-Queens
- LeetCode(51) N-Queens
- leetcode 51: N-Queens
- LeetCode51——N-Queens