6.25 - hard - 12

51. N-Queens
比较经典的backtracking的问题, backtracking就是要1.循环的条件,2进入的条件和状态,3.退出后的状态

class Solution(object):
    def solveNQueens(self, n):
        """
        :type n: int
        :rtype: List[List[str]]
        """
        board = [["." for _ in range(n)] for _ in range(n)]
        self.res = []
        self.dfs(board, 0)
        return self.res
    
    def dfs(self, board, i): # put chess on ith row
        if i == len(board):
            # print board
            self.res.append(["".join(x) for x in board])
            return
        
        for j in range(len(board[0])):
            # 对于所有列
            if self.valid(board, i, j):
                board[i][j] = 'Q'
                self.dfs(board, i+1)
                board[i][j] = '.'
    
    def valid(self, board, i, j):
        # valid row
        if 'x' in board[i]:
            return False
        
        # valid col
        for k in range(len(board)):
            if board[k][j] == 'Q':
                return False
        
        # valid diag
        for k in range(len(board)):
            col = k + j - i
            if 0 <= col < len(board) and board[k][col] == 'Q':
                return False
        
        # valid antidiag
        for k in range(len(board)):
            col = i + j - k
            if 0 <= col < len(board) and board[k][col] == 'Q':
                return False
        return True
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、实验目的 学习使用 weka 中的常用分类器,完成数据分类任务。 二、实验内容 了解 weka 中 explo...
    yigoh阅读 8,827评论 5 4
  • 每每跟阿姨谈起恋爱这个事的时候,总是想穿过手机到她面前锤她一顿,嘿呀,好气呀,拉黑拉黑(第N次) 然后某天,我...
    乌龟假面阅读 201评论 0 0
  • 在深度学习中,自编码器是非常有用的一种无监督学习模型。自编码器由encoder和decoder组成,前者将原始表示...
    宏伦工作室阅读 10,355评论 1 11
  • 那些日子,感觉整个人睡也睡不好,就担心事情没做好,做好了又怕那里又有问题,整个心都是悬着,就怕一个不留神,又落了个...
    NIYAHONG97阅读 310评论 0 0

友情链接更多精彩内容