n皇后问题leetcode python
时间: 2024-01-11 16:22:29 浏览: 121
以下是解决N皇后问题的Python代码示例:
```python
class Solution:
def solveNQueens(self, n: int) -> List[List[str]]:
def backtrack(row, path):
if row == n:
result.append(path)
return
for col in range(n):
if isValid(row, col):
board[row][col] = 'Q'
backtrack(row + 1, path + ["".join(board[row])])
board[row][col] = '.'
def isValid(row, col):
for i in range(row):
if board[i][col] == 'Q':
return False
if col - (row - i) >= 0 and board[i][col - (row - i)] == 'Q':
return False
if col + (row - i) < n and board[i][col + (row - i)] == 'Q':
return False
return True
board = [['.' for _ in range(n)] for _ in range(n)]
result = []
backtrack(0, [])
return result
```
该代码使用回溯算法来解决N皇后问题。在`backtrack`函数中,我们逐行放置皇后,并使用`isValid`函数来判断当前位置是否可以放置皇后。如果可以放置,我们将皇后放置在棋盘上,并继续递归地放置下一行的皇后。当放置完所有皇后时,将当前棋盘状态添加到结果列表中。
阅读全文