Select Page

# n queen problem

Home Forums C Programming n queen problem

• Author
Posts
• #2202

Hello,
I have an N Queen code which produces proper output in matrix form and it will also gives all distinct result…

I want the given code to be modified as follows:
1) it should take the input as coordinates
ex: enter the no of queens
4
enter the coordinates:
0 1

2)when it takes the input in coordinate, it should check for that coordinate in all the possible matrix
if the coordinate is found in any of the matrix then it should display message called queen placed and display that particular matrix
if it is not found then it should given an output as illegal move…

Please can anyone help me with this problem….
thank you…

code:
#include
#include
#include
#include

//using namespace std;
int const MAX=20;
#define TRUE 1
#define FALSE 0

void print_solution(int n,int x[])
{

char c;

for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
c[j]=’x’;
}
}

//place the queens on the board
for( i=1; i<=n; i++)
{
c
[x]=’Q’;
}

//print where the queens have been placed on chess board
for( i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
cout<[j];
}
cout<<"n";
}

}

//function to check whether the queen can be placed successfully or not
int place(int x[],int k)
{
for(int i=1; i {
//check whether the queens attach vertically or diagonally
if(x
==x[k]||i-x==k-x[k]||i+x==k+x[k])
{
return FALSE;//queen can not be placed in the kth column
}
}
//kth queen can be successfully placed
return TRUE;
}
void nqueens(int n)
{
int x;
int count=0; //number of solutions
int k=1; //select the first queen

x[k]=0;

while(k!=0) //A queen exists?
{
x[k]+=1; //place the kth queen in next column
//satisfy both explicit and implicit constraint
while((x[k]<=n)&&(!place(x,k)))
{
x[k]+=1; //place queen in next column
}
//if queen successfully placed?
if(x[k]<=n)
{
//if all queens are placed
if(k==n)
{
count++;
cout<<"nsolutin"< print_solution(n,x);

}
else
{
k++; //select the next queen
x[k]=0; //but do not place
}
}
else
{
//backtrack and select previous queen
k–;
}
}
//no more solution exist
return;
}

void main()
{
int n;
clrscr();
cout<<"Enter the no. of queensn";
cin>>n;
nqueens(n);
getch();
}

Example of an output:
enter the no of queens
4
solution 1 is

xQxx
xxxQ
Qxxx
xxQx

solution 2 is

xxQx
Qxxx
xxxQ
xQxx