欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python的n皇后問題

錢浩然1年前7瀏覽0評論

Python是一種編程語言,它具有簡單易懂的語法和靈活的應(yīng)用場景。在Python中,我們可以使用遞歸函數(shù)來解決n皇后問題。

def solveNQueens(n):
def dfs(queens, xy_dif, xy_sum):
p = len(queens)
if p==n:
result.append(queens)
return None
for q in range(n):
if q not in queens and p-q not in xy_dif and p+q not in xy_sum: 
dfs(queens+[q], xy_dif+[p-q], xy_sum+[p+q])  
result = []
dfs([],[],[])
return [["."*i + "Q" + "."*(n-i-1) for i in sol] for sol in result]

這個(gè)函數(shù)實(shí)現(xiàn)了如下的思路。從第一行開始,對于每一列,如果該列上沒有Q且沒有在對角線上出現(xiàn)過,則將Q填入該位置。接著,我們進(jìn)入下一行,再使用相同方法來填充下一行。如果填充滿了整個(gè)棋盤,那么我們就找到了一種解決方案,將該方案加入到結(jié)果集中。如果沒有找到解決方案,則返回None。最終,我們返回所有的解法。

在使用這段代碼時(shí),我們可以將函數(shù)的參數(shù)n替換成我們想要的棋盤大小,然后運(yùn)行即可。例如,如果我們想要解決8皇后問題,則可以這樣調(diào)用函數(shù):

result = solveNQueens(8)

函數(shù)返回的是一個(gè)二維數(shù)組,其中每個(gè)元素都是一個(gè)解決方案。每個(gè)方案都是長度為n的字符串?dāng)?shù)組,其中Q表示皇后,.表示該位置為空。我們可以使用嵌套循環(huán)來遍歷解決方案,并將其打印出來:

for solution in result:
for row in solution:
print(row)
print("\n")

這段代碼將會(huì)把每個(gè)解決方案打印輸出,每個(gè)解決方案之間通過換行符分隔開來。我們可以使用此代碼來檢查函數(shù)是否正確解決了n皇后問題。如果一切順利,我們將會(huì)得到一個(gè)包含所有解決方案的輸出結(jié)果。

上一篇oracle 匹配
下一篇curl庫php