class Solution(object):
def check(self, n, pos):
posset=set()
li=pos[-1]
lj=len(pos)-1
for pj,pi in enumerate(pos[:-1]):
if pi==li or pj==lj: return False
if pi-li==pj-lj or pi-li==lj-pj: return False
return True
def nextpos(self, n, pos):
pos[-1]+=1
i=pos[-1]
if len(pos)==1 and i>=n:
return True
while i >= n and len(pos)>1:
del pos[-1]
pos[-1]+=1
i=pos[-1]
return False
def nextline(self, n, pos, ret):
while True:
while not self.check(n, pos):
stop=self.nextpos(n,pos)
if stop: break
if pos[0]>=n:
break
if len(pos) == n:
ret.append(pos[:])
self.nextpos(n,pos)
else:
pos.append(0)
def totalNQueens(self, n):
"""
:type n: int
:rtype: List[List[str]]
"""
ret = []
pos = []
pos.append(0)
self.nextline(n, pos, ret)
return len(ret)