//N-Queen
#include<iostream.h>
#include<conio.h>
#include<math.h>
class NQueen
{
int i, X[10],k,count,N;
public:
NQueen()
{
k=1;
count=1;
// N=8;
X[k]=0;
}
void Nqueen(void);
int Place(int);
};
void NQueen :: Nqueen(void)
{
cout << "\n Enter the numbers of queens :";
cin >> N;
while(k>0)
{
X[k]++;
while(X[k] <= N && Place(k) == 0)
X[k]=X[k]+1;
if(X[k] <= N)
{
if(k==N)
{
cout << "\n Solutions No : " << count << endl;
for(i=1;i<=N;i++)
cout << "\t" << X[i];
count++;
}
else
{
k++;
X[k]=0;
}
}
else
{
k--;
}
}
cout << "\n The total no of solutions of " << N <<" queen problem is :" << count-1;
}
int NQueen :: Place(int k)
{
for(i=1;i<k;i++)
{
if((X[i] == X[k]) || (abs(X[i]-X[k])==abs(i-k)))
return 0;
}
return 1;
}
void main()
{
NQueen q;
clrscr();
q.Nqueen();
getch();
}
#include<iostream.h>
#include<conio.h>
#include<math.h>
class NQueen
{
int i, X[10],k,count,N;
public:
NQueen()
{
k=1;
count=1;
// N=8;
X[k]=0;
}
void Nqueen(void);
int Place(int);
};
void NQueen :: Nqueen(void)
{
cout << "\n Enter the numbers of queens :";
cin >> N;
while(k>0)
{
X[k]++;
while(X[k] <= N && Place(k) == 0)
X[k]=X[k]+1;
if(X[k] <= N)
{
if(k==N)
{
cout << "\n Solutions No : " << count << endl;
for(i=1;i<=N;i++)
cout << "\t" << X[i];
count++;
}
else
{
k++;
X[k]=0;
}
}
else
{
k--;
}
}
cout << "\n The total no of solutions of " << N <<" queen problem is :" << count-1;
}
int NQueen :: Place(int k)
{
for(i=1;i<k;i++)
{
if((X[i] == X[k]) || (abs(X[i]-X[k])==abs(i-k)))
return 0;
}
return 1;
}
void main()
{
NQueen q;
clrscr();
q.Nqueen();
getch();
}
Comments
Post a Comment