python写N皇后问题
时间: 2023-09-22 07:09:48 浏览: 68
python 实现N皇后
以下是Python实现N皇后问题的代码:
```python
def is_safe(board, row, col, n):
# 检查列
for i in range(row):
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:
return True
# 尝试在当前行放置皇后
for col in range(n):
if is_safe(board, row, col, n):
board[row][col] = 1
if solve(board, row+1, n):
return True
board[row][col] = 0
# 没有解
return False
def n_queens(n):
board = [[0]*n for _ in range(n)]
if solve(board, 0, n):
for row in board:
print(' '.join(str(cell) for cell in row))
else:
print('No solution')
n_queens(8)
```
这个程序使用回溯法来解决N皇后问题。`is_safe`函数检查当前位置是否安全,`solve`函数递归地尝试在每一行放置一个皇后,如果找到解,返回True,否则返回False。最后,`n_queens`函数创建一个棋盘并调用`solve`函数来解决问题。如果找到解,则打印出棋盘,否则打印"No solution"。
阅读全文