题解 | #N皇后问题#

N皇后问题

https://www.nowcoder.com/practice/c76408782512486d91eea181107293b6

class Solution:
    def Nqueen(self, n: int) -> int:

        corrs = []
        for i in range(n):
            for j in range(n):
                corrs.append((i, j, i * n + j))

        d = []
        self.count = 0
        def fun(tmp, corrs, row_index):
            if len(tmp) == n:
                tmp_set = set([i[2] for i in tmp])
                if tmp_set not in d:
                    self.count += 1
                    d.append(tmp_set)
                return

            # 每行选1个
            for i in range(n):
                add = True
                x = row_index
                y = i
                k = row_index * n + y
                for j in range(len(tmp)):
                    xx, yy, kk = tmp[j]
                    if x == xx or y == yy or abs(x - xx) == abs(y - yy):
                        add = False
                        break
                if add:
                    removed_corrs = corrs[i+1:]
                    fun(tmp + [[x, y, k]], removed_corrs, row_index + 1)

        fun([], corrs, 0)
        return self.count

全部评论

相关推荐

牛客54175811...:今年对双非很难。1、争取一段大厂实习经历,2、狂磕八股,3、再跑个难度提升的项目。
点赞 评论 收藏
分享
用微笑面对困难:除了美国之外,剩下两个地方是不是买单程票就行了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务