写一个python八位皇后程序
时间: 2023-10-04 18:04:50 浏览: 46
好的,下面是一个八皇后问题的Python程序:
```python
def solve(n):
if n == 0:
return [[]]
smaller_solutions = solve(n - 1)
solutions = []
for solution in smaller_solutions:
for column in range(8):
if not attacked(column, solution):
solutions.append(solution + [column])
return solutions
def attacked(column, queens):
row = len(queens)
for row2, column2 in enumerate(queens):
if column == column2:
return True
if row + column == row2 + column2:
return True
if row - column == row2 - column2:
return True
return False
for solution in solve(8):
print(solution)
```
这个程序使用递归来解决问题。它定义了一个`solve()`函数,该函数接受一个整数`n`,并返回一个列表,其中包含所有在一个8x8的棋盘上放置`n`个皇后的解决方案。
`solve()`函数使用递归来解决问题。如果`n`为零,则返回一个包含一个空列表的列表。否则,它会通过递归调用`solve()`函数来获取`n-1`个皇后的解决方案。然后,它遍历所有可能的列,找到可以放置皇后的列,并将其添加到当前解决方案的末尾。如果找到了一个解决方案,则将其添加到`solutions`列表中,并返回该列表。
`attacked()`函数用于检查皇后是否受到攻击。它接受一个整数`column`和一个列表`queens`,该列表包含从前`row`行放置的皇后的列。它检查是否有其他皇后位于同一列、同一对角线或反对角线上,并返回一个布尔值,指示皇后是否受到攻击。
最后,我们使用`solve(8)`来获取8皇后问题的解决方案,并将其打印到控制台上。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)