八皇后问题递归方法求解Python代码
时间: 2023-11-21 10:05:30 浏览: 92
八皇后问题是一个经典的回溯问题,以下是Python实现代码(递归方法):
```python
def is_valid(board, row, col):
# 检查列是否有皇后
for i in range(row):
if board[i] == col:
return False
# 检查右上方是否有皇后
r = row - 1
c = col + 1
while r >= 0 and c < len(board):
if board[r] == c:
return False
r -= 1
c += 1
# 检查左上方是否有皇后
r = row - 1
c = col - 1
while r >= 0 and c >= 0:
if board[r] == c:
return False
r -= 1
c -= 1
return True
def solve(board, row):
if row == len(board):
print(board)
return
for col in range(len(board)):
if is_valid(board, row, col):
board[row] = col
solve(board, row + 1)
board[row] = -1
board = [-1] * 8
solve(board, 0)
```
这里使用一个一维数组来表示棋盘,数组下标表示行号,数组元素表示列号,例如 `board[0] = 3` 表示第一行第四列放置了一个皇后。`is_valid` 函数用于检查当前位置是否可以放置皇后,`solve` 函数用于递归求解八皇后问题。
阅读全文