n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。
上图为 8 皇后问题的一种解法。
给定一个整数 n,返回 n 皇后不同的解决方案的数量。
示例:
输入: 4
输出: 2
解释: 4 皇后问题存在如下两个不同的解法。
[
[".Q…", // 解法 1
“…Q”,
“Q…”,
“…Q.”],
["…Q.", // 解法 2
“Q…”,
“…Q”,
“.Q…”]
]
思路
与51题差不多,将统计结果,改为计算数量即可,
51题见此https://blog.youkuaiyun.com/qq_37369124/article/details/87815083
n皇后是一道很经典的算法问题,还有很多更加快速巧妙的方法,其他方法在此不讨论
代码
def totalNQueens(self, n):
l=[0]*n
t=0
for i in range(n):
l[0]=i
t=t+self.f(l,n,1)
return t
def f(self,l,n,k):
t=0
if k==n:return 1
for i in range(n):
u=0
for c in range(k):
if(l[c]==i or l[c]-c==i-k or l[c]-k==i-c ):
u=1
break
if(u==0):
l[k]=i
t=t+self.f(l,n,k+1)
return t