8 Queens algorithm using Backtracking technique.
Algorithm NQueens(k, n)
{
for i := 1 to n do
{
if Place(k, i) then
{
x[k]:=i;
if (k = n) then write (x[l : n]);
else NQueens(k + 1 , n) ;
}
}
}
Algorithm Place(k, i)
{
for j := 1 to k — 1 do
if ((x[j] =i)
or (Abs (x[j] — i) = Abs(j — k)))
then return false;
return true;
}
Source Code:
def nqueens(k, n, x):
for i in range(1, n+1):
if place(k, i, x):
x[k] = i
if k == n:
print_board(x)
else:
nqueens(k+1, n, x)
def place(k, i, x):
for j in range(1, k):
if x[j] == i or abs(x[j] - i) == abs(j - k):
return False
return True
def print_board(x):
n = len(x)
for i in range(n):
row = ['Q' if x[i] == j+1 else '.' for j in range(n)]
print(' '.join(row))
n = 8
x = [0] * (n+1)
nqueens(1, n, x)
output
1
5
8
6
3
7
2
4
Comments
Post a Comment