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