Implementation of N-queen Problem in Python
In this article, we are going to solve the N queen problem using the backtracking approach in python.
About N queen problem:
Given the value of N, our goal is to place the N number of queens in a NxN chessboard such that no two queens can attack each other or in other words, we have to place N number of queens such that no two queens can be in the same row, column or diagonally.
Solution:
This problem can be solved using the backtracking approach. We will start by placing queens one by one. While placing a queen, check whether it is safe which means it does not with another queen in a row, column, or diagonal way; if it is safe, we will mark this as our solution; otherwise, move to the next cell.
Code:
n=int(input("Enter no. of queens: "))
x=[0]*(n+1)
# checking whether the placement of queen is safe or not.
def feasible(k,j):
for i in range(1,k):
if ((x[i]==j) or (abs(j-x[i])==abs(k-i))):
return False
return True
def recur_nqueens(k,n):
for x[k] in range(1,n+1):
if feasible(k,x[k]):
if k==n:
res=x[1:]
print(res)
else:
recur_nqueens(k+1,n)
print("Possible no. of ways queens placed in each row is:")
recur_nqueens(1,n)
Output:
Enter no. of queens: 4
Possible no. of ways queens placed in each row is:
[2, 4, 1, 3]
[3, 1, 4, 2]
In the output, it shows all possible solutions, i.e., all possible arrangements of queens in chessboard, and each solution is represented by a list as i-th element of the list represents the column number in which the queen is placed in i-th row.
Thank you
Project Files
| .. | ||
| This directory is empty. | ||