码迷,mamicode.com
首页 > 其他好文 > 详细

N皇后问题 --使用位运算解决

时间:2019-10-08 12:50:09      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:ota   sel   n皇后   elf   int   col   def   type   位运算   

关键位运算
x & (-x) 取得最低位1
x & (x-1) 去掉最低位1

class Solution(object):
    def totalNQueens(self, n):
        """
        :type n: int
        :rtype: int
        """
        if n < 1 : return []
        self.count = 0
        self.DFS(n,0,0,0,0)
        return self.count
    
    def DFS(self,n, row, cols, pie, na):
        
        if row >=n:
            self.count += 1
            return
        # 得到当前所有的空位
        bits = (~(cols | pie | na)) & ((1<<n)-1)
        
        while bits:
            p = bits & -bits # 取到最低位的1
            self.DFS(n, row + 1, cols|p, (pie|p) <<1, (na|p)>>1)
            bits = bits & (bits - 1) # 去掉最低位的1

N皇后问题 --使用位运算解决

标签:ota   sel   n皇后   elf   int   col   def   type   位运算   

原文地址:https://www.cnblogs.com/yeni/p/11634467.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!