Tuesday, 12 May 2015

N-Queen Problem

   Implement N Queen’s problem using Back Tracking


#include<stdio.h>
#include<stdlib.h>
int place(int);

int X[10];

void main()
{
   int i,j,n,k,count=0;
   printf("\n\n*************N-QUEEN PROBLEM***************\n\n");
   printf("Enter the number of elements:");
   scanf("%d",&n);
   if(n==0||n==2||n==3)
    {
        printf("\n\n No solution\n");
        printf("\n\n********** ************ **********\n\n");
        exit(0);
    }
   k=1;
   X[k]=0;
   while(k)
   {
       X[k]=X[k]+1;
       while(X[k]<=n&&!place(k))
             X[k]=X[k]+1;
       if(X[k]<=n)
         {
             if(k==n)
              {
                 printf("\nSolution %d\n\n",++count);
                 for(i=1;i<=n;i++)
                    {
                       for(j=1;j<X[i];j++)
                            printf("*\t");
                       printf("Q\t");
                       for(j=X[i]+1;j<=n;j++)
                              printf("*\t");
                            printf("\n");
                    }
              }
              else
              {
                   k=k+1;
                   X[k]=0;
              }
         }
         else
                 k=k-1;
     }
     printf("\n\n******** ********* *********\n\n");

int place(int p)
{
    int i;
    for(i=1;i<=p-1;i++)
     {
       if(X[i]==X[p]||abs(i-p)==abs(X[i]-X[p]))
         return 0;
     }
     return 1;
}







OUTPUT:

Enter the number of elements:4

Solution 1
*    Q    *    *
*    *    *    Q
Q    *    *    *
*    *    Q    *

Solution 2
*    *    Q    *
Q    *    *    *
*    *    *    Q
*    Q    *    *

******* ******** ***********

0 comments:

Post a Comment