N = 4
# Function to print the solution board
def print_board(board):
for row in board:
print(row)
print()
# Check if a queen can be safely placed at board[row][col]
def is_safe(board, row, col):
# Check same column
for i in range(row):
if board[i][col] == 1:
return False
# Check upper-left diagonal
i, j = row - 1, col - 1
while i >= 0 and j >= 0:
if board[i][j] == 1:
return False
i -= 1
j -= 1
# Check upper-right diagonal
i, j = row - 1, col + 1
while i >= 0 and j < N:
if board[i][j] == 1:
return False
i -= 1
j += 1
return True
# Backtracking function to solve N-Queen
def solve(board, row, solutions):
# Base case: if all queens are placed (row == N), save the solution
if row == N:
# Save a deep copy of the board as a solution
solutions.append([row[:] for row in board])
return
# Try placing the queen in each column of the current row
for col in range(N):
if is_safe(board, row, col):
board[row][col] = 1 # Place queen
# Recurse to place the queen in the next row
solve(board, row + 1, solutions)
# Backtrack: remove the queen (reset to 0) before trying the next column
board[row][col] = 0
# Main driver code
# Initialize an empty N x N board (4x4 in this case)
board = [[0] * N for _ in range(N)]
solutions = []
solve(board, 0, solutions)
# Print all found solutions
count = 1
for sol in solutions:
print("Solution", count)
for row in sol:
print(row)
print()
count += 1
TiA9IDQKCiMgRnVuY3Rpb24gdG8gcHJpbnQgdGhlIHNvbHV0aW9uIGJvYXJkCmRlZiBwcmludF9ib2FyZChib2FyZCk6CiAgICBmb3Igcm93IGluIGJvYXJkOgogICAgICAgIHByaW50KHJvdykKICAgIHByaW50KCkKCiMgQ2hlY2sgaWYgYSBxdWVlbiBjYW4gYmUgc2FmZWx5IHBsYWNlZCBhdCBib2FyZFtyb3ddW2NvbF0KZGVmIGlzX3NhZmUoYm9hcmQsIHJvdywgY29sKToKICAgICMgQ2hlY2sgc2FtZSBjb2x1bW4KICAgIGZvciBpIGluIHJhbmdlKHJvdyk6CiAgICAgICAgaWYgYm9hcmRbaV1bY29sXSA9PSAxOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKCiAgICAjIENoZWNrIHVwcGVyLWxlZnQgZGlhZ29uYWwKICAgIGksIGogPSByb3cgLSAxLCBjb2wgLSAxCiAgICB3aGlsZSBpID49IDAgYW5kIGogPj0gMDoKICAgICAgICBpZiBib2FyZFtpXVtqXSA9PSAxOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBpIC09IDEKICAgICAgICBqIC09IDEKCiAgICAjIENoZWNrIHVwcGVyLXJpZ2h0IGRpYWdvbmFsCiAgICBpLCBqID0gcm93IC0gMSwgY29sICsgMQogICAgd2hpbGUgaSA+PSAwIGFuZCBqIDwgTjoKICAgICAgICBpZiBib2FyZFtpXVtqXSA9PSAxOgogICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICBpIC09IDEKICAgICAgICBqICs9IDEKICAgICAgICAKICAgIHJldHVybiBUcnVlCgojIEJhY2t0cmFja2luZyBmdW5jdGlvbiB0byBzb2x2ZSBOLVF1ZWVuCmRlZiBzb2x2ZShib2FyZCwgcm93LCBzb2x1dGlvbnMpOgogICAgIyBCYXNlIGNhc2U6IGlmIGFsbCBxdWVlbnMgYXJlIHBsYWNlZCAocm93ID09IE4pLCBzYXZlIHRoZSBzb2x1dGlvbgogICAgaWYgcm93ID09IE46CiAgICAgICAgIyBTYXZlIGEgZGVlcCBjb3B5IG9mIHRoZSBib2FyZCBhcyBhIHNvbHV0aW9uCiAgICAgICAgc29sdXRpb25zLmFwcGVuZChbcm93WzpdIGZvciByb3cgaW4gYm9hcmRdKSAKICAgICAgICByZXR1cm4KCiAgICAjIFRyeSBwbGFjaW5nIHRoZSBxdWVlbiBpbiBlYWNoIGNvbHVtbiBvZiB0aGUgY3VycmVudCByb3cKICAgIGZvciBjb2wgaW4gcmFuZ2UoTik6CiAgICAgICAgaWYgaXNfc2FmZShib2FyZCwgcm93LCBjb2wpOgogICAgICAgICAgICBib2FyZFtyb3ddW2NvbF0gPSAxICMgUGxhY2UgcXVlZW4KICAgICAgICAgICAgCiAgICAgICAgICAgICMgUmVjdXJzZSB0byBwbGFjZSB0aGUgcXVlZW4gaW4gdGhlIG5leHQgcm93CiAgICAgICAgICAgIHNvbHZlKGJvYXJkLCByb3cgKyAxLCBzb2x1dGlvbnMpCiAgICAgICAgICAgIAogICAgICAgICAgICAjIEJhY2t0cmFjazogcmVtb3ZlIHRoZSBxdWVlbiAocmVzZXQgdG8gMCkgYmVmb3JlIHRyeWluZyB0aGUgbmV4dCBjb2x1bW4KICAgICAgICAgICAgYm9hcmRbcm93XVtjb2xdID0gMCAKCiMgTWFpbiBkcml2ZXIgY29kZQojIEluaXRpYWxpemUgYW4gZW1wdHkgTiB4IE4gYm9hcmQgKDR4NCBpbiB0aGlzIGNhc2UpCmJvYXJkID0gW1swXSAqIE4gZm9yIF8gaW4gcmFuZ2UoTildIApzb2x1dGlvbnMgPSBbXQpzb2x2ZShib2FyZCwgMCwgc29sdXRpb25zKQoKIyBQcmludCBhbGwgZm91bmQgc29sdXRpb25zCmNvdW50ID0gMQpmb3Igc29sIGluIHNvbHV0aW9uczoKICAgIHByaW50KCJTb2x1dGlvbiIsIGNvdW50KQogICAgZm9yIHJvdyBpbiBzb2w6CiAgICAgICAgcHJpbnQocm93KQogICAgcHJpbnQoKQogICAgY291bnQgKz0gMQ==
Solution 1
[0, 1, 0, 0]
[0, 0, 0, 1]
[1, 0, 0, 0]
[0, 0, 1, 0]
Solution 2
[0, 0, 1, 0]
[1, 0, 0, 0]
[0, 0, 0, 1]
[0, 1, 0, 0]