Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- void dFS(int depth, int nQueens);
- bool isCheck(int depth, int queenY);
- void printBoard(int nQueens);
- int Queens[12]={0};
- int solveNum=0;
- int main()
- {
- int input;
- while(cin>>input)
- {
- if(input==0)
- {
- break;
- }
- dFS(1,input);
- cout<<solveNum<<endl<<endl;
- solveNum=0;
- }
- return 0;
- }
- void dFS(int depth, int nQueens)
- {
- if(depth==nQueens+1)
- {
- printBoard(nQueens);
- solveNum++;
- return;
- }
- for(int queenY=1;queenY<=nQueens;queenY++)
- {
- if(isCheck(depth,queenY))
- {
- Queens[depth]=queenY;
- dFS(depth+1, nQueens);
- }
- Queens[depth]=0;
- }
- }
- bool isCheck(int depth, int queenY)
- {
- for(int queenX=1;queenX<depth;queenX++)
- {
- if(Queens[queenX]==queenY)
- {
- return false;
- }
- int sideX = depth-queenX;
- int sideY = queenY-Queens[queenX];
- if(sideX==sideY || sideX==(-1)*sideY)
- {
- return false;
- }
- }
- return true;
- }
- void printBoard(int nQueens)
- {
- for(int row=1;row<=nQueens;row++)
- {
- for(int column=1;column<=nQueens;column++)
- {
- if(column==Queens[row])
- {
- cout<<"Q";
- }
- else
- {
- cout<<"x";
- }
- }
- cout<<endl;
- }
- cout<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement