N Queens
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)