主頁(yè) > 知識(shí)庫(kù) > python 非遞歸解決n皇后問(wèn)題的方法

python 非遞歸解決n皇后問(wèn)題的方法

熱門(mén)標(biāo)簽:女王谷地圖標(biāo)注 西藏快速地圖標(biāo)注地點(diǎn) 百應(yīng)ai電銷(xiāo)機(jī)器人鄭州 長(zhǎng)春人工智能電銷(xiāo)機(jī)器人官網(wǎng) 廈門(mén)crm外呼系統(tǒng)如何 地圖標(biāo)注推廣單頁(yè) ai地圖標(biāo)注 如何在地圖標(biāo)注文字 n400電話申請(qǐng)多少錢(qián)

復(fù)雜度可能高了點(diǎn)- - 也沒(méi)太注意

我想了好久 也找了好久 沒(méi)看到什么能夠用python解決n皇后問(wèn)題而且不調(diào)用遞歸的 因?yàn)槲也惶芾斫膺f歸(尤其是到n層時(shí)) 智商受限- -

import copy

def check(A,x,y):
  B=[]
  flag=True
  for i in range(len(A)):
    for j in range(len(A)):
      if A[i][j]==1:
        B.append([i,j])
  for m in range(len(B)):
    p = B[m][0]
    q = B[m][1]
    if y == q or (x-p)==abs(y-q):
      flag=False
  return flag

def queen(n):
  A=[[0 for __ in range(n)] for _ in range(n)]
  answer=[]
  for _ in range(n):
    stack=[[0,_,A]]
    while stack:
      judge = 0
      obj=stack.pop(-1)
      x=obj[0]
      y=obj[1]
      array=obj[2]
      flag=check(array,x,y)
      if not flag:
        while 1:
          if check(array, x, y):
            break
          else:
            if stack:
              b=stack.pop(-1)
              x=b[0]
              y=b[1]
              array=b[2]
            else:
              judge=1
              break
      if judge==1:
        break
      array=copy.deepcopy(array)
      array[x][y]=1
      for m in range(n):
        if m!=y and m!=y-1 and m!=y+1 and x+1n :
          stack.append([x+1,m,array])
      # print(array)
      for j in range(len(array[n-1])):
        if array[n-1][j]==1:
          answer.append(array)
  print(len(answer))
queen(8)

answer中存放的就是最后所有的可行組合
當(dāng)前解決的是8皇后問(wèn)題
我的想法是用dfs 在每次搜索時(shí) 帶上該次搜索需要擺放的位置 x,y,以及待擺放的棋盤(pán) 即[x,y,A]
這樣不會(huì)導(dǎo)致所有的操作都在一個(gè)矩陣上進(jìn)行

到此這篇關(guān)于python 非遞歸解決n皇后問(wèn)題的方法的文章就介紹到這了,更多相關(guān)python 非遞歸n皇后內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python 使用遞歸回溯完美解決八皇后的問(wèn)題
  • Python八皇后問(wèn)題解答過(guò)程詳解
  • Python實(shí)現(xiàn)八皇后問(wèn)題示例代碼
  • python八皇后問(wèn)題的解決方法
  • Python基于生成器迭代實(shí)現(xiàn)的八皇后問(wèn)題示例
  • Python解決八皇后問(wèn)題示例
  • python基于右遞歸解決八皇后問(wèn)題的方法

標(biāo)簽:廊坊 渭南 黔東 內(nèi)江 綿陽(yáng) 亳州 興安盟 拉薩

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python 非遞歸解決n皇后問(wèn)題的方法》,本文關(guān)鍵詞  python,非,遞歸,解決,皇后,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python 非遞歸解決n皇后問(wèn)題的方法》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于python 非遞歸解決n皇后問(wèn)題的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章