File tree Expand file tree Collapse file tree 1 file changed +60
-0
lines changed
Expand file tree Collapse file tree 1 file changed +60
-0
lines changed Original file line number Diff line number Diff line change 1+ #include < iostream>
2+ #include < set>
3+ #include < vector>
4+ using namespace std ;
5+ set<int > row_c,col_c,mai_c,opp_c;
6+ void printBoard (vector<vector<int > > board){
7+ static int k = 1 ;
8+ cout<<" Board " <<k++<<" :\n " ;
9+ for (int i=0 ;i<board.size ();i++){
10+ for (int j=0 ;j<board[i].size ();j++){
11+ cout<<board[i][j]<<" " ;
12+ }
13+ cout<<endl;
14+ }
15+ cout<<endl;
16+ }
17+ bool isSafe (int row,int col){
18+ if (row_c.find (row)!=row_c.end ())
19+ return false ;
20+ if (col_c.find (col)!=col_c.end ())
21+ return false ;
22+ if (mai_c.find (row-col)!=mai_c.end ())
23+ return false ;
24+ if (opp_c.find (row+col)!=opp_c.end ())
25+ return false ;
26+ return true ;
27+ }
28+ void setBoard (vector<vector<int > >&board, int row,int col){
29+ board[row][col] = 1 ;
30+ row_c.insert (row);
31+ col_c.insert (col);
32+ mai_c.insert (row-col);
33+ opp_c.insert (row+col);
34+ }
35+ void unsetBoard (vector<vector<int > >&board, int row,int col){
36+ board[row][col] = 0 ;
37+ row_c.erase (row);
38+ col_c.erase (col);
39+ mai_c.erase (row-col);
40+ opp_c.erase (row+col);
41+ }
42+ void solveBoard (vector<vector<int > > &board,int row){
43+ if (row==board.size ()){
44+ printBoard (board);
45+ return ;
46+ }
47+ for (int i=0 ;i<board.size ();i++){
48+ if (isSafe (row,i)){
49+ setBoard (board,row,i);
50+ solveBoard (board,row+1 );
51+ unsetBoard (board,row,i);
52+ }
53+ }
54+ }
55+ int main (){
56+ cout<<" Enter size of board: " ;
57+ int n; cin>>n;
58+ vector<vector<int > > board = vector<vector<int > >(n,std::vector<int > (n,0 ));
59+ solveBoard (board,0 );
60+ }
You can’t perform that action at this time.
0 commit comments