LeetCode-51-N-Queens 八皇后问题dfs
2017-09-19 17:55
525 查看
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()
def judge(self,p):
x=p/self.N
y=p%self.N
for i in range(len(self.P)):
curx=self.P[i]/self.N
cury=self.P[i]%self.N
if curx==x or cury==y or abs(curx-x)==abs(cury-y):
return False
return True
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()
def judge(self,p):
x=p/self.N
y=p%self.N
for i in range(len(self.P)):
curx=self.P[i]/self.N
cury=self.P[i]%self.N
if curx==x or cury==y or abs(curx-x)==abs(cury-y):
return False
return True
相关文章推荐
- LeetCode-51. N-Queens和LeetCode-52. N-Queens II
- leetcode 51 N-Queens 回溯 万能结构
- [leetcode] 51.N-Queens
- 【一天一道LeetCode】#51. N-Queens
- LeetCode-51.N-Queens
- Leetcode 51 52 N-Queens
- n皇后问题leetcode-51. N-Queens
- 51.leetcode N-Queens(hard)[递归回溯剪枝]
- LeetCode_51---N-Queens
- leetcode-51. N-Queens
- LeetCode 51 N-Queens
- 【一天一道LeetCode】#51. N-Queens
- LeetCode 51. N-Queens
- (java)leetcode-51:N-Queens
- leetCode 51. N-Queens | 回溯问题(N皇后问题) | hard
- LeetCode 51. N-Queens--Python实现
- leetcode(51):N-Queens
- leetcode-51-N-Queens
- LeetCode51——N-Queens
- 【LeetCode】51. N-Queens