Advertisement
codecstasy

Queen and Chessboard

Feb 14th, 2021
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.62 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define N 4
  3. using namespace std;
  4.  
  5. int max;
  6.  
  7. bool is_safe(int board[N][N], int r, int c) {
  8.     for(int j=0 ; j<N ; j++) {   ///Row check
  9.         if(board[r][j]==1)
  10.             return false;
  11.     }
  12.     for(int i=0 ; i<N ; i++) {   ///Column check
  13.         if(board[i][c]==1)
  14.             return false;
  15.     }
  16.     for(int i=r,j=c ; ; i++,j++) {  ///Down Right diagonal check
  17.         if(i==N-1 || j==N-1)
  18.             break;
  19.         if(board[i][j]==1)
  20.             return false;
  21.     }
  22.     for(int i=r,j=c ; ; i--,j--) {  ///Upper Left diagonal check
  23.         if(i==N-1 || j==N-1)
  24.             break;
  25.         if(board[i][j]==1)
  26.             return false;
  27.     }
  28.     for(int i=r,j=c ; ; i++,j--) {  ///Down Left diagonal check
  29.         if(i==N-1 || j==N-1)
  30.             break;
  31.         if(board[i][j]==1)
  32.             return false;
  33.     }
  34.     for(int i=r,j=c ; ; i--,j++) {  ///Upper Right diagonal check
  35.         if(i==N-1 || j==N-1)
  36.             break;
  37.         if(board[i][j]==1)
  38.             return false;
  39.     }
  40.     return true;
  41. }
  42.  
  43. int solve(int board[N][N],int col,int cnt) {
  44.     if(col==N) {   ///Base Case
  45.         return max;
  46.     }
  47.     for(int i=0 ; i<N ; i++) {
  48.         if(is_safe(board,i,col)) {
  49.             board[i][col]=1;
  50.             cnt++;
  51.             if(max<cnt) max=cnt;
  52.             solve(board,col+1,cnt);
  53.             board[i][col]=0;
  54.             cnt--;
  55.         }
  56.     }
  57.     return max;
  58. }
  59.  
  60. int main() {
  61.     int board[N][N]={0,0,0,0
  62.                      0,0,0,0
  63.                      0,0,0,0
  64.                      0,0,0,0};
  65.     max=0;
  66.     cout << solve(board,0,0);
  67.     return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement