Skip to content

Commit d80b18c

Browse files
committed
feat: n-queens
1 parent 979b571 commit d80b18c

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

back.n-queens.py

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
from typing import List
2+
3+
class Solution:
4+
"""
5+
51. N 皇后
6+
https://leetcode-cn.com/problems/n-queens/
7+
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。
8+
"""
9+
def solveNQueens(self, n: int) -> List[List[str]]:
10+
pie = set()
11+
na = set()
12+
shu = set()
13+
res = []
14+
tmp = []
15+
def dfs(row):
16+
if row == n:
17+
res.append(tmp[:])
18+
return
19+
20+
for c in range(n):
21+
if c in shu or c + row in pie or row - c in na:
22+
continue
23+
24+
shu.add(c)
25+
pie.add(row + c)
26+
na.add(row - c)
27+
l = ['.' for i in range(n)]
28+
l[c] = 'Q'
29+
tmp.append(''.join(l))
30+
dfs(row + 1)
31+
tmp.pop()
32+
shu.remove(c)
33+
pie.remove(row + c)
34+
na.remove(row - c)
35+
36+
37+
dfs(0)
38+
return res
39+
40+
41+
so = Solution()
42+
print(so.solveNQueens(3))

0 commit comments

Comments
 (0)