八皇后问题
时间: 2023-07-31 15:04:53 浏览: 128
八皇后问题是指如何在一个 8x8 的棋盘上放置 8 个皇后,使得任意两个皇后都不能在同一行、同一列或同一斜线上。这是一个经典的递归问题,可以使用回溯算法来解决。
具体来说,可以从第一行开始,逐行放置皇后。在每一行中,依次尝试在每个列中放置皇后,直到找到一个合法的位置。如果无法找到合法位置,则回溯到上一行,重新尝试放置皇后。当所有皇后都放置完毕时,即可得到一组解。
下面是一个简单的 Python 代码实现:
```python
def solve_queens(n):
def is_valid(board, row, col):
for i in range(row):
if board[i] == col or abs(board[i] - col) == row - i:
return False
return True
def backtrack(board, row, res):
if row == n:
res.append(board[:])
return
for col in range(n):
if is_valid(board, row, col):
board[row] = col
backtrack(board, row + 1, res)
board[row] = -1
board = [-1] * n
res = []
backtrack(board, 0, res)
return res
# 示例:求解八皇后问题
solutions = solve_queens(8)
print(len(solutions)) # 输出 92
```
该算法的时间复杂度为 O(n^n),空间复杂度为 O(n)。
阅读全文