nikunjsoni

51

May 22nd, 2021
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     vector<vector<int>> ans;
  4.     vector<int> state;
  5.     bool visd[30], visad[30], vis[30];
  6.     vector<vector<string>> fans;
  7.    
  8.     vector<vector<string>> solveNQueens(int n) {
  9.         backtrack(0, n);
  10.         convertToString(n);
  11.         return fans;
  12.     }
  13.    
  14.     void backtrack(int col, int n){
  15.         if(col == n){
  16.             ans.push_back(state);
  17.             return;
  18.         }
  19.         for(int row=0; row<n; row++){
  20.             if(!vis[row] && !visd[row-col+n-1]  && !visad[row+col]){
  21.                 vis[row] = visd[row-col+n-1] = visad[row+col] = true;
  22.                 state.push_back(row);
  23.                 backtrack(col+1, n);
  24.                 state.pop_back();
  25.                 vis[row] = visd[row-col+n-1] = visad[row+col] = false;
  26.             }
  27.         }
  28.     }
  29.    
  30.     void convertToString(int n){
  31.         for(int k=0; k<ans.size(); k++){
  32.             vector<string> pat;
  33.             for(int i=0; i<n; i++){
  34.                 string s;
  35.                 for(int j=0; j<n; j++)
  36.                     s += ".";
  37.                 s[ans[k][i]] = 'Q';
  38.                 pat.push_back(s);
  39.             }
  40.             fans.push_back(pat);
  41.         }
  42.     }
  43.    
  44. };
Advertisement
Add Comment
Please, Sign In to add comment