回溯法n皇后问题python
时间: 2023-11-17 11:02:27 浏览: 99
N_queen.zip_n queen问题_queen
以下是回溯法解决n皇后问题的Python代码实现:
```python
n = 4
res = [-1 for i in range(n)]
def isRight(curr:int):
for i in range(curr+1):
for j in range(i+1,curr+1):
if i==j or res[i]==res[j] or abs(i-j)==abs(res[i]-res[j]):
return False
return True
def NQueen(curr:int):
if curr < n:
for i in range(n):
res[curr] = i
if isRight(curr):
NQueen(curr+1)
else:
res[curr] = -1
else:
print(res)
NQueen(0)
```
该代码使用了递归和回溯的思想,首先定义了一个长度为n的数组res,用于存储每个皇后所在的列数。然后定义了一个isRight函数,用于判断当前放置的皇后是否与之前的皇后产生冲突。最后定义了一个NQueen函数,用于递归地放置皇后。在NQueen函数中,首先判断当前行是否已经放置完毕,如果没有,则依次尝试每一列,如果当前列可以放置,则继续递归下一行;否则回溯到上一行,继续尝试下一列。当第一行的皇后放置完毕后,即可输出结果。
阅读全文