题解 | #N皇后问题#

N皇后问题

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

class Solution:
    def Nqueen(self, n):
        def dfs(i, j, n):
            if i == n:
                self.res += 1
                return
            for j in range(j, n):
                if isok(i, j):
                    dp[i][j] = 'Q'
                    dfs(i + 1, 0, n)
                    dp[i][j] = '.'
        #用来判断上方、右上、左上方是否有Q,这里注意每次while后要重定义i,j
        def isok(i, j):
            ii=i
            jj=j
            while i>=0:
                if dp[i][j] == 'Q':
                    return False
                i-=1
            i,j=ii,jj
            while i>=0 and j>=0:
                if dp[i][j] == 'Q':
                    return False
                i-=1
                j-=1
            i, j = ii, jj
            while i>=0 and j<n:
                if dp[i][j] == 'Q':
                    return False
                i-=1
                j+=1
            return True

        # write code here
        dp = [['.'] * n for _ in range(n)]
        self.res = 0
        dfs(0, 0, n)
        return self.res
全部评论

相关推荐

想申请延毕了,找工作找到崩溃,越找就越想摆烂,还有25届的和我一样感受吗?
码农索隆:没事哒,好兄弟,慢慢来,调整心态,车到山前必有路,感到迷茫的时候,多抬头看看
点赞 评论 收藏
分享
谁知道呢_:要掉小珍珠了,库库学三年,这个结果
点赞 评论 收藏
分享
没有offer的呆呆:薪资有的时候也能说明一些问题,太少了活不活得下去是一方面,感觉学习也有限
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务