jayati

N-Queen Problem

Oct 3rd, 2023
1,011
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.16 KB | None | 0 0
  1. //{ Driver Code Starts
  2. // Initial Template for C++
  3.  
  4. #include <bits/stdc++.h>
  5. using namespace std;
  6.  
  7. // } Driver Code Ends
  8. // User function Template for C++
  9.  
  10. class Solution{
  11. public:
  12.     vector<vector<int>> ans;
  13.     bool isSafe(vector<vector<int>> &board,int r,int c,int n)
  14.     {
  15.         for(int i=0;i<r;i++)
  16.         {
  17.             if(board[i][c]==1)
  18.             {
  19.                 return false;
  20.             }
  21.         }
  22.         for(int i=r-1,j=c-1;i>=0 && j>=0;i--,j--)
  23.         {
  24.             if(board[i][j]==1)
  25.             {
  26.                 return false;
  27.             }
  28.         }
  29.         for(int i=r-1,j=c+1;i>=0 && j<n;i--,j++)
  30.         {
  31.             if(board[i][j]==1)
  32.             {
  33.                 return false;
  34.             }
  35.         }
  36.         return true;
  37.     }
  38.     void helper(vector<vector<int>> &board,int n,int r)
  39.     {
  40.         if(r==n)
  41.         {
  42.             vector<int> temp;
  43.             for(int i=0;i<n;i++)
  44.             {
  45.                 for(int j=0;j<n;j++)
  46.                 {
  47.                     if(board[i][j]==1)
  48.                     {
  49.                         temp.push_back(j+1);
  50.                     }
  51.                 }
  52.             }
  53.             ans.push_back(temp);
  54.             return;
  55.         }
  56.         for(int i=0;i<n;i++)
  57.         {
  58.             if(isSafe(board,r,i,n))
  59.             {
  60.                 board[r][i]=1;
  61.                 helper(board,n,r+1);
  62.                 board[r][i]=0;
  63.             }
  64.         }
  65.     }
  66.     vector<vector<int>> nQueen(int n) {
  67.         // code here
  68.         vector<vector<int>> board(n,vector<int>(n,0));
  69.         helper(board,n,0);
  70.         return ans;
  71.     }
  72. };
  73.  
  74. //{ Driver Code Starts.
  75.  
  76. int main(){
  77.     int t;
  78.     cin>>t;
  79.     while(t--){
  80.         int n;
  81.         cin>>n;
  82.        
  83.         Solution ob;
  84.         vector<vector<int>> ans = ob.nQueen(n);
  85.         if(ans.size() == 0)
  86.             cout<<-1<<"\n";
  87.         else {
  88.             for(int i = 0;i < ans.size();i++){
  89.                 cout<<"[";
  90.                 for(int u: ans[i])
  91.                     cout<<u<<" ";
  92.                 cout<<"] ";
  93.             }
  94.             cout<<endl;
  95.         }
  96.     }
  97.     return 0;
  98. }
  99. // } Driver Code Ends
Tags: Hard Imp
Advertisement
Add Comment
Please, Sign In to add comment