//nqueens #include<iostream> #include <conio.h> #include<math.h> #include<stdlib.h> #define max 20 using namespace std; class nqueens { private: int n; public: nqueens(int num); void display(int [],int); int place(int [],int); }; nqueens::nqueens(int num) { int x[max]; int k; n=num; cout<<"the soln to"<<n<<"queens problem is\n"; x[0]=-1; k=0; while(k>=0) { x[k]=x[k]+1; while(x[k]<n&&!place(x,k)) x[k]=x[k]+1; if(x[k]<n) if(k==n-1) display(x,n); else { k++; x[k]=-1; } else k--; } } int nqueens::place(int x[],int k) { int i; for(i=0;i<k;i++) if(x[i]==x[k]||abs(x[i]-x[k])==abs(i-k)) return 0; return 1; } void nqueens::display(int x[],int n) { char chessb[max][max]; int i,j; for(i=0;i<n;i
Comments
Post a Comment