NQueen Problem

 #include<iostream.h>  
 #include<conio.h>  
 #include<math.h>  
 #include<dos.h>  
 void nqueen(int);  
 int place(int);  
 void disp(int);  
 int x[20], n;  
 void main()  
 {  
  clrscr();  
  cout<<"\n\t\tNQUEEN PROBLEM";  
  cout<<"\n\n\nEnter the number of queens ; ";  
  cin>>n;  
  nqueen(n);  
  getch();  
 }  
 void nqueen(int n)  
 {  
  int k,i,z;  
  k=z=1;  
  while(k>0)  
  {  
    x[k]=x[k]+1;  
    while((x[k]<=n)&&(!place(k)))  
      x[k]=x[k]+1;  
    if(x[k]<=n)  
    {  
      if(k==n)  
      {  
        cout<<"\n\n\nCOMBINATION "<<z<<'\n';  
        z++;  
        for(i=1;i<=n;i++)  
            disp(x[i]);  
        cout<<"\t";  
        delay(600);  
      }  
      else  
        x[++k]=0;  
    }  
    else  
      k--;  
  }  
 }  
 int place(int k)  
 {  
  int i;  
  for(i=1;i<=k-1;i++)  
    if((x[i]==x[k])||((abs(x[i]-x[k]))==(abs(i-k))))  
      return(0);  
  return(1);  
 }  
 void disp(int ch)  
 {  
  for(int f=1; f<=n; f++)  
    if(ch==f)  
      cout<<ch<<'\t';  
    else  
      cout<<"- \t";  
  cout<<'\n';  
 }  

Share This!


No comments:

Post a Comment

Code Of The day - Suggest An Output For The Snippet

  #include<stdio.h>   
  int main()   
  {   
   float a=3.15529;   
   printf("%2.1f\n", a);   
   return 0;   
  }   
· A Code Archive - code1archive