6.25 - hard - 13

52. N-Queens II

和上一题基本没什么区别

class Solution(object):
    def solveNQueens(self, n):
        """
        :type n: int
        :rtype: List[List[str]]
        """
        board = [["." for _ in range(n)] for _ in range(n)]
        self.count = 0
        self.dfs(board, 0)
        return self.count
    
    def dfs(self, board, i): # put chess on ith row
        if i == len(board):
            # print board
            self.count += 1
            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辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,358评论 0 33
  • LeetCode 刷题随手记 - 第一部分 前 256 题(非会员),仅算法题,的吐槽 https://leetc...
    蕾娜漢默阅读 18,249评论 2 36
  • 一、实验目的 学习使用 weka 中的常用分类器,完成数据分类任务。 二、实验内容 了解 weka 中 explo...
    yigoh阅读 12,781评论 5 4
  • UI设计师必学的设计规范要点总结 www.woshipm.com/ucd/110202.html 要做设计规范前,...
    snowdoem阅读 1,778评论 0 2
  • 小时候 是多么渴望长大。 渴望去看绚丽多彩的世界, 渴望能长着一双翅膀,带我到处去飞翔。 渴望挣脱一切不喜欢的束缚...
    一棵樹阅读 1,553评论 0 0

友情链接更多精彩内容