Repository navigation
Expand file tree
/
Copy pathN-Queens.py
More file actions
72 lines (60 loc) · 1.67 KB
/
Copy pathN-Queens.py
File metadata and controls
72 lines (60 loc) · 1.67 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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
"""
---------------------------------- N-Queens ---------------------------------
You are given N, and for a given N x N chessboard, find a way to place N queens
such that no queen can attack any other queen on the chess board. A queen can be
killed when it lies in the same row, or same column, or the same diagonal of any
of the other queens. You have to print all such configurations.
Input Format :
Line 1 : Integer N
Output Format :
One Line for every board configuration.
Every line will have N*N board elements printed row wise and are separated by space
Note :
Don't print anything if there isn't any valid configuration.
Constraints :
1<=N<=10
Sample Input 1:
4
Sample Output 1 :
0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0
0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0
"""
def isSafe(row,col,board,n):
i=row-1
while i>=0:
if board[i][col]==1:
return False
i-=1
i=row-1
j=col-1
while i>=0 and j>=0:
if board[i][j]==1:
return False
i-=1
j-=1
i=row-1
j=col+1
while i>=0 and j<n:
if board[i][j]==1:
return False
i-=1
j+=1
return True
def printPathsHelper(row,n,board):
if row==n:
for i in range(n):
for j in range(n):
print(board[i][j], end=" ")
print()
return
for col in range(n):
if isSafe(row,col,board,n) is True:
board[row][col]=1
printPathsHelper(row+1,n,board)
board[row][col]=0
return
def nQueen(n):
board=[[0 for j in range(n)] for i in range(n)]
printPathsHelper(0,n,board)
n = int(input())
nQueen(n)