亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python八皇后問題的解決方法

2020-02-15 23:03:56
字體:
來源:轉載
供稿:網友

本文為大家分享了python八皇后問題的解決方法,供大家參考,具體內容如下

題目:

給定一個 N*N 正方形棋盤,在上面放置 N個棋子,又叫皇后,使每兩個棋子都不在同一條橫線上、豎線上、斜線上。一般我們都討論8皇后,但是只要N > 4,都會存在解的。

分析:

方法1:根據定義來處理,即每往棋盤中放置皇后的時候,都要判斷哪些位置可以放新加入的皇后,而哪些地方如果放置皇后的話,會造成沖突。我下面寫的這個代碼就是基于此。
方法2、我看了下別人的優化,主要是采用位運算來實現計算復雜度降低的,我沒有用Python 實現這個,所以在這里挖一個坑。

代碼:

代碼里的注釋有詳細的說明,設定N值,即可返回一個符合要求的解。但是這個問題還有一個進階,那就是討論究竟會有多少個解,這就需要數論的知識了,而且我對這塊數學沒研究過,所以也沒有代碼實現。大家將就使用一下代碼就好了。

class EightQueensPuzzle(object):  '''  八皇后問題求解  代碼使用方法:    eight_q = EightQueensPuzzle(4, 5)    print "EIGHT QUEEDS PUZZLE:"    result = eight_q.eight_queens_puzzle()    for i in result:      print i  '''  def __init__(self, n, char):    self.n = n # 棋盤維度    self.char = char # 皇后標記字符  def init_chess_board(self, n):    '''    初始化一個棋盤,棋盤規格可以按參數 n 隨意選定,一般都討論八皇后,就選擇 8    :return: 返回棋盤,是一個 8*8 矩陣    '''    chess_board = []    for i in xrange(0, n):      line = []      for j in xrange(0, n):        line.append(0)      chess_board.append(line)    return chess_board  def update_conflict_board(self, conflict_board, position):    for k in xrange(0, self.n): # 為行添加 1      conflict_board[position[0]][k] = 1    for id in xrange(position[0]+1, self.n):      conflict_board[id][position[1]] = 1 # 為列添加 1      if position[0] + position[1] - id >= 0: # 為左斜添加 1        conflict_board[id][position[0] + position[1] - id] = 1      if position[1] - position[0] + id < self.n: # 為右斜添加 1        conflict_board[id][position[1] - position[0] + id] = 1  def queens_conflict(self, conflict_board, position):    '''    當前棋盤的狀態是 conflict_board, 判定如果在 position 位置給一個皇后的話,會不會出現問題。    如果有問題則返回 False,如果沒有問題返回 True    '''    if conflict_board[position[0]][position[1]] != 0:      return False    else:      return True  def eight_queens_puzzle(self):    '''    給出一個八皇后的求解答案。    :return:返回一個結果并打印.    '''    import random    while True: # 不停尋找符合條件的八皇后排列      chess_board = self.init_chess_board(self.n)      conflict_board = self.init_chess_board(self.n)      for i in xrange(0, self.n):        flag = 0        for cnt in conflict_board[i]:          if cnt != 0:            flag += 1        if flag == self.n: # 如果已經1被填滿了,說明這個答案錯誤          break        while True:          pos = [i, random.randint(0, self.n-1)] # 元組構成皇后的位置          if self.queens_conflict(conflict_board, pos): # 如果沒有沖突            chess_board[i][pos[1]] = self.char            self.update_conflict_board(conflict_board, pos)            break      if self.char in chess_board[self.n-1]:        return chess_board            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲男人的天堂在线播放| 久久久久久久久久久免费精品| 欧美激情视频在线免费观看 欧美视频免费一| 日韩中文字幕在线视频| 岛国精品视频在线播放| 97在线观看视频| 日韩在线激情视频| 97精品国产97久久久久久春色| 亚洲国产成人久久综合一区| 国产亚洲欧洲黄色| 国产精品永久免费视频| 九色精品免费永久在线| 国产亚洲精品久久久| 国内外成人免费激情在线视频网站| 国产精品美女主播| 国产精品久久久久久久久| 久久男人av资源网站| 日韩精品免费观看| 国产偷亚洲偷欧美偷精品| 一个人看的www欧美| 精品国偷自产在线视频| 97在线视频国产| 午夜精品久久久99热福利| 欧美一级淫片aaaaaaa视频| 欧美日韩中国免费专区在线看| 中文字幕国产日韩| 国产成人免费91av在线| 精品日韩美女的视频高清| 亚洲美女喷白浆| 精品国产一区二区三区久久久| 久久久久国产精品免费| 91热精品视频| 国产中文字幕亚洲| 欧美高清videos高潮hd| 久久久精品久久久久| 欧美日韩一区二区在线| 亚洲欧美综合区自拍另类| 57pao成人国产永久免费| 欧美精品在线观看91| 一区二区三区无码高清视频| 国产精品久久久久久av福利| 亚洲国产日韩欧美在线动漫| 国产丝袜一区视频在线观看| 日韩成人高清在线| 欧美成人免费全部| 亚洲第一精品电影| 成人在线激情视频| 欧美第一黄色网| 久久综合久久美利坚合众国| 亚洲小视频在线观看| 欧美另类69精品久久久久9999| 成人日韩av在线| 久久久久女教师免费一区| 日韩欧美高清视频| 日韩精品视频在线免费观看| 成人久久精品视频| 97香蕉超级碰碰久久免费的优势| 亚洲网在线观看| 55夜色66夜色国产精品视频| 欧美成人性色生活仑片| 97视频在线观看免费高清完整版在线观看| 91av在线国产| 欧美激情亚洲一区| 国产精品视频导航| 国产在线视频2019最新视频| 久久久久久久一区二区| 亚洲精品mp4| 国产亚洲综合久久| 中文字幕一精品亚洲无线一区| 中文字幕无线精品亚洲乱码一区| 国产日韩精品综合网站| 亚洲精品99久久久久| 欧美成人免费播放| 欧日韩在线观看| 福利微拍一区二区| 91精品国产91久久久久久不卡| 久久精品人人做人人爽| 国产精品免费看久久久香蕉| 日本在线精品视频| 国产精品夜色7777狼人| 亚洲欧美日韩中文在线| 最近2019中文字幕第三页视频| 欧美日韩中文在线| 欧美日韩中文在线观看| 亚洲男人的天堂在线播放| 日韩中文在线中文网三级| 久久精品亚洲热| 欧美噜噜久久久xxx| 国产精品丝袜白浆摸在线| 欧美黄网免费在线观看| 国产精品爱久久久久久久| 欧美一二三视频| 久久久精品国产网站| 欧美午夜无遮挡| 成人黄色中文字幕| 78m国产成人精品视频| 成人黄色免费看| 亚洲欧美国产另类| 九九热精品视频| 日本久久亚洲电影| 久久精品欧美视频| 日韩在线免费观看视频| 国产亚洲一区二区精品| 麻豆国产精品va在线观看不卡| 亚洲国产私拍精品国模在线观看| 亚洲国产精品成人一区二区| 欧美亚洲另类制服自拍| 亚洲香蕉在线观看| 国产成人亚洲综合91精品| 欧美性xxxx极品hd欧美风情| 亚洲欧美国产精品久久久久久久| 欧美成人精品xxx| 激情av一区二区| 91精品国产色综合久久不卡98口| 亚洲美女动态图120秒| 国产精品88a∨| 欧美在线播放视频| 日韩网站免费观看| 亚洲激情自拍图| 在线播放精品一区二区三区| 精品国产一区二区在线| 亚洲香蕉成视频在线观看| 亚洲第一网站男人都懂| 中文字幕综合在线| 欧美亚洲国产日韩2020| 国产精品视频大全| 中文字幕av一区| 91精品在线看| 69国产精品成人在线播放| 欧美日韩不卡合集视频| 亚洲一区二区三区在线免费观看| 日韩av一区在线观看| 91在线观看欧美日韩| 亚洲精品国产福利| 欧美xxxx综合视频| 国产91精品久久久久久久| 日韩不卡在线观看| 欧美大奶子在线| 国产精品视频一| 国产欧美精品在线播放| 欧美福利小视频| 欧美激情精品久久久久久大尺度| 国产精品高清在线| 777午夜精品福利在线观看| 琪琪亚洲精品午夜在线| 国产日韩av在线播放| 亚洲大胆人体视频| 日韩激情av在线播放| 91在线观看免费| 久久久久久久一| 色婷婷av一区二区三区久久| 久久精品国产亚洲| 日韩精品视频中文在线观看| 亚洲在线视频观看| 久久久久久久影视| 亚洲国产私拍精品国模在线观看| 日韩成人在线观看| 国产91露脸中文字幕在线| 亚洲一区二区免费在线| 国产免费一区视频观看免费| 欧美午夜无遮挡| 欧美成人一区二区三区电影| 青草青草久热精品视频在线观看| 久久成人18免费网站|