写个八皇后python代码
时间: 2023-09-05 18:12:56 浏览: 82
以下是八皇后问题的Python代码:
```python
def is_valid(board, row, col, n):
# 检查列是否有冲突
for i in range(n):
if board[i][col] == 1:
return False
# 检查左上角是否有冲突
i, j = row - 1, col - 1
while i >= 0 and j >= 0:
if board[i][j] == 1:
return False
i, j = i - 1, j - 1
# 检查右上角是否有冲突
i, j = row - 1, col + 1
while i >= 0 and j < n:
if board[i][j] == 1:
return False
i, j = i - 1, j + 1
return True
def solve(board, row, n):
if row == n:
# 打印出解
for i in range(n):
for j in range(n):
print(board[i][j], end=' ')
print()
print()
return True
for col in range(n):
if is_valid(board, row, col, n):
board[row][col] = 1
solve(board, row + 1, n)
board[row][col] = 0
return False
n = 8
board = [[0] * n for _ in range(n)]
solve(board, 0, n)
```
这个代码使用回溯算法,从第一行开始逐行放置皇后,每一行只放一个皇后,然后检查该皇后是否与之前已经放置的皇后有冲突,如果没有冲突,则继续递归放置下一行的皇后。如果在某一行中没有找到合适的位置放置皇后,则回溯到上一行重新放置皇后。最终,如果找到了一个解,则会打印出来。
阅读全文