N皇后问题 --使用位运算解决
Posted yeni
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了N皇后问题 --使用位运算解决相关的知识,希望对你有一定的参考价值。
关键位运算
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皇后问题 --使用位运算解决的主要内容,如果未能解决你的问题,请参考以下文章