Blogger news

Followers

Monday, July 21, 2014
/* Implement N Queen's problem using Back Tracking.*/


#include<stdio.h>
int place(int);
int i,p,x[100],k=1,n,j,count=0;
void main()
{
            x[k]=0;
            printf("\nEnter the number of queens\n");
            scanf("%d",&n);
            if((n==2) || (n==3))
                        printf("\nIt is not possible to place the queen\n");
            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)
                                    {
                                                count++;
                                                printf("\nSolution is %d:\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("\nNumber of solutions is::%d\n",count);
}
int place(int p)
{
            for(i=1;i<p;i++)
            {
                        if(x[i]==x[p] || abs(x[i]-x[p])==abs(i-p))
                        return 0;
            }
            return 1;
}



0 comments: