//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();
}

Comments

Popular posts from this blog

Uploading Image to Sql Server Image Datatype in asp.net using fileupload Control

Get Running Sum of Query SQL Query