//works great for n<9 cant figure out why it doesnt work for n>=9// Code: #include <iostream> #include <math.h> using namespace std; class board { public: board(int n) { this->size=n; list=new int[size]; solutions=0; for(int i=0;i<size;i++) list[i]=-1; } ~board() { delete list; } int solve(int col); bool process(int col,int left); void printboard(); private: int* list; int size; int solutions; }; int board::solve(int col) { if(col>=0){ if(process(col,col-1)){ if(col==size-1) solutions++; else col++;} else col--; return solve(col);} return solutions; } bool board::process(int col,int left) { list[col]++; for(list[col]=list[col];list[col]<size;list[col]++){ if(list[col]!=list[left]&&(list[col]-col)!=(list[left]-left)&&(list[col]+col)!=(list[left]+left)){ for(left=left-1;left>=0;left--){ if(list[col]==list[left]||(list[col]-col)==(list[left]-left)||(list[col]+col)==(list[left]+left)){ left=col-1; break;}} if(left<0) break; }} if(list[col]>=size){ list[col]=-1; return false;} return true; } void board::printboard() { int a,b,c; for(a=0;a<size;a++) { for(b=0;b<size;b++) cout<<"-----"; cout<<endl; for(c=0;c<size;c++){ cout<<"| "; if(list[c]==a) cout<<"Q "; else cout<<" ";} cout<<'|'<<endl;} for(a=0;a<size;a++) cout<<"-----"; } void main() { int n; cout<<"Enter board size: "; cin>>n; board b(n); cout<<b.solve(0)<<endl; cout<<endl; }