-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathleetcode51_n_queens.py
More file actions
48 lines (43 loc) · 1.16 KB
/
leetcode51_n_queens.py
File metadata and controls
48 lines (43 loc) · 1.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
def n_queens(num,count,row, new_board):
board = []
if count == num:
temp = [",".join(i) for i in new_board]
board.append(temp)
print(new_board)
return board
if row > num-1:
return board
for col in range(len(new_board)):
if is_valid(row,col,new_board):
new_board[row][col]= "Q"
board+=n_queens(num,count+1,row+1,new_board)
new_board[row][col] ="."
return board
def is_valid(row,col,board):
r = row
if row>0:
while r >0:
if board[r-1][col]=="Q":
return False
r-=1
r1 = row
c = col
while r1 >0 and c+1 <len(board):
if board[r1-1][c+1] == "Q":
return False
r1-=1
c+=1
count = min(row,col)
for _ in range(count):
if board[row-1][col-1] == "Q":
return False
row-=1
col-=1
return True
def print_board(board):
for row in board:
print(row)
print()
num = 4
new_board =[ ["."] * num for i in range (num)]
print(n_queens(4,0,0,new_board))