写一个解决八皇后问题的python代码
时间: 2024-02-04 15:02:07 浏览: 61
好的,下面是一个基于回溯算法的八皇后问题的Python代码:
```python
def is_valid(board, row, col):
# 检查同一列是否有皇后
for i in range(row):
if board[i] == col:
return False
# 检查左上方是否有皇后
i, j = row - 1, col - 1
while i >= 0 and j >= 0:
if board[i] == j:
return False
i, j = i - 1, j - 1
# 检查右上方是否有皇后
i, j = row - 1, col + 1
while i >= 0 and j < len(board):
if board[i] == j:
return False
i, j = i - 1, j + 1
return True
def solve(board, row):
if row == len(board):
# 找到了一个解
return True
for col in range(len(board)):
if is_valid(board, row, col):
board[row] = col
if solve(board, row + 1):
return True
# 没有找到解
return False
def print_board(board):
for row in range(len(board)):
line = ""
for col in range(len(board)):
if board[row] == col:
line += "Q "
else:
line += ". "
print(line)
print()
def solve_n_queens(n):
board = [-1] * n
solve(board, 0)
print_board(board)
```
你可以调用 `solve_n_queens(n)` 函数来解决 n 皇后问题,其中 `n` 为皇后数量。函数会打印出所有的解。
阅读全文