n*n棋盘上,输出n皇后问题一共有多少种解法
#
#
# @param n int整型
# @return int整型
#
class Solution:
res=0
def totalNQueens(self , n ):
# write code here
col=[0]*n
diag1=[0]*(2*n-1)#每一条主对角线的标志
diag2=[0]*(2*n-1)#每一条副对角线的标志
def putQueens(row,n):
if row==n:
self.res+=1
return
for i in range(n):#遍历每一列
if not(col[i] or diag1[row-i] or diag2[row+i]):#同一列 左右对角线都没有放置过
col[i]=diag1[row-i]=diag2[row+i]=1
putQueens(row+1,n)
col[i]=diag1[row-i]=diag2[row+i]=0
putQueens(0,n)
return self.res