## What is N Queens Problem?

The N Queens problem is:

*How can N queens be placed on an NxN chessboard so that no two of them attack each other?*

The **eight queens puzzle** is the problem of placing eight chess queens on an n x n chessboard so that no two queens threaten each other.

Thus, a solution requires that no two queens share the same row, column, or diagonal. The eight queens puzzle is an example of the more general ** n queens problem** of placing

*n*non-attacking queens on an

*n*×

*n*chessboard, for which solutions exist for all natural numbers

*n*with the exception of

*n*=2 and

*n*=3.

A possible solution for N Queens problem is:

Python program to implement N Queens problem:

def isSafe(board, row, col, n): # check if there is a queen in the same row for i in range(col): if board[row][i] == 1: return False # check if there is a queen in the upper diagonal on the left side for i, j in zip(range(row, -1, -1), range(col, -1, -1)): if board[i][j] == 1: return False # check if there is a queen in the lower diagonal on the left side for i, j in zip(range(row, n), range(col, -1, -1)): if board[i][j] == 1: return False return True def solveNQueenUtil(board, col, n): # base case: all queens are placed if col == n: return True # try placing a queen in each row in the current column for i in range(n): if isSafe(board, i, col, n): board[i][col] = 1 # recursively place the rest of the queens if solveNQueenUtil(board, col + 1, n): return True # backtrack and remove the queen from the current position board[i][col] = 0 # no safe placement found in this column return False def solveNQueen(n): # create a n x n chess board board = [[0 for x in range(n)] for y in range(n)] if solveNQueenUtil(board, 0, n) == False: print("No solution exists.") return False # print the solution for i in range(n): for j in range(n): print(board[i][j], end=' ') print() return True

To solve the n-queen problem, you can call the `solveNQueen`

function with the desired value of n. For example, to solve the problem for n=4, you can call `solveNQueen(4)`

. The program will print the solution if one exists, otherwise it will print “No solution exists.”.

Let us know in comments in case of any suggestions.

Also check: N Queens problem using backtracking in C