python八皇后问题
时间: 2023-06-30 09:03:07 浏览: 66
八皇后问题是一个经典的回溯算法问题,其目标是在一个8×8的棋盘上放置8个皇后,使得每个皇后都不会互相攻击(即不在同一行、同一列或同一对角线上)。以下是Python代码实现:
```python
def print_board(board):
for row in board:
print(row)
def is_valid_move(board, row, col):
for i in range(len(board)):
if board[i][col] == 1:
return False
if row-i >= 0 and col-i >= 0 and board[row-i][col-i] == 1:
return False
if row-i >= 0 and col+i < len(board) and board[row-i][col+i] == 1:
return False
return True
def solve(board, row):
if row == len(board):
return True
for col in range(len(board)):
if is_valid_move(board, row, col):
board[row][col] = 1
if solve(board, row+1):
return True
board[row][col] = 0
return False
board = [[0]*8 for i in range(8)]
solve(board, 0)
print_board(board)
```
在这个实现中,我们使用了一个二维列表来表示棋盘,其中0表示空格,1表示皇后。函数`is_valid_move`用于判断当前位置是否可以放置皇后。函数`solve`使用递归实现回溯算法,在每一行中尝试放置皇后,如果当前位置可以放置皇后,则继续递归到下一行,否则回溯到上一行重新选择位置。最后我们可以调用`print_board`函数来输出结果。
阅读全文