class Solution(object):
N=0
P=[]
ans=[]
def solveNQueens(self, n):
"""
:type n: int
:rtype: List[List[str]]
"""
self.N=n
self.ans=[]
self.dfs(n,0)
return self.ans
#print self.ans
def dfs(self, n, raw):
if(n==0):
curans=[['.' for i in range(self.N)]for j in range(self.N)]
for i in range(self.N):
curans[self.P[i]/self.N][self.P[i]%self.N]='Q'
for i in range(self.N):
curans[i]="".join(curans[i])
self.ans.append(curans)
#self.ans.append(self.P[:])
for i in range(raw*self.N,raw*self.N+self.N):
if self.judge(i):
self.P.append(i)
self.dfs(n-1,raw+1)
self.P.pop()