OneCompiler

N Queens

96

def print_solution(board, N):
for i in range(N):
for j in range(N):
print('1' if board[i][j] == 'Q' else '0', end=' ')
print()
print()

def is_safe(board, row, col, N):

for i in range(row):
    if board[i][col] == 'Q':
        return False


i, j = row - 1, col - 1
while i >= 0 and j >= 0:
    if board[i][j] == 'Q':
        return False
    i -= 1
    j -= 1


i, j = row - 1, col + 1
while i >= 0 and j < N:
    if board[i][j] == 'Q':
        return False
    i -= 1
    j += 1

return True

def solve_nqueens(board, row, N):
if row == N:
print_solution(board, N)
return True

res = False
for col in range(N):
    if is_safe(board, row, col, N):
        board[row][col] = 'Q'
        res = solve_nqueens(board, row + 1, N) or res
        board[row][col] = '.'  

return res

N = int(input("Enter number of queens (N): "))
board = [['.'] * N for _ in range(N)]

if not solve_nqueens(board, 0, N):
print("No solution exists for N =", N)