You are on page 1of 5

N-Queen problem using backtracking

Program:
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<process.h>
int x[20];
int count;
void print_board(int n)
{
int i,j;
printf("\n\nsolution %d:\n\n",++count);
for(i=1;i<=n;i++)
{
printf("\t%d",i);
}
for(i=1;i<=n;i++)
{
printf("\n\n%d",i);
for(j=1;j<=n;j++)
{
if(x[i]==j)
printf("\tQ");
else
printf("\t-");
}
}
printf("\npress any key to continue");
getch();
}
int place(int row,int column)
{
int i;
for(i=1;i<=row-1;i++)
{
if(x[i]==column)
return 0;
else
if(abs(x[i]-column)==abs(i-row))
return 0;
}
return 1;
}
void queen(int row,int n)
{
int column;
for(column=1;column<=n;column++)
{
if(place(row,column))
{
x[row]=column;
if(row==n)
print_board(n);
else
queen(row+1,n);
}
}
}
void main()
{
int n,i,j;
printf("\n\tprogram for n-queens using backtracking");
printf("\nenter no of queens");
scanf("%d",&n);
queen(1,n);
getch();
}
Output:
For 4-queens:

Solution: (2,4,1,3)
(3,1,4,2)
For 8-queens:

Solution: (6,4,7,1,3,5,2,8)
Solution: (7,5,3,1,6,8,2,4)

You might also like