您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页N皇后问题

N皇后问题

来源:二三四教育网
def isConflict(self,index):
        nextY = len(self.result)
        for i in range(nextY):
            if abs(self.result[i] - index) in (0, nextY - i):
                return True
        return False


    def drawChess(self):
        cols = []
        n = len(self.result)
        for i in range(n):
            r = ['.'] * n
            r[self.result[i]] = 'Q'
            cols.append(''.join(r))
        return cols

    def searchNQueens(self, n):
        if len(self.result) == n:
            self.resultAll.append(self.drawChess())
            return

        for index in range(n):
            if self.isConflict(index) == True:
                continue
            self.result.append(index)
            self.searchNQueens(n)
            self.result.pop()

    def solveNQueens(self, n):
        self.resultAll = []
        self.result = []
        self.searchNQueens(n)
        return self.resultAll

注释版本

# 判断新加入的index,是否与已存在的冲突
    def isConflict(self,index):
        nextY = len(self.result)
        for i in range(nextY):
            if abs(self.result[i] - index) in (0, nextY - i):
                return True
        return False

    #将数组画出来
    def drawChess(self):
        cols = []
        n = len(self.result)
        for i in range(n):
            r = ['.'] * n
            r[self.result[i]] = 'Q'
            cols.append(''.join(r))
        return cols

    def searchNQueens(self, n):
        #符合条件就加入到self.resultAl
        if len(self.result) == n:
            self.resultAll.append(self.drawChess())
            return

        for index in range(n):
            #先判断将要加入的元素,是否和已存在的冲突
            if self.isConflict(index) == True:
                continue
            self.result.append(index)
            self.searchNQueens(n)
            self.result.pop()

    def solveNQueens(self, n):
        self.resultAll = []
        self.result = []
        self.searchNQueens(n)
        return self.resultAll

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

热门图文

Copyright © 2019-2025 how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务