Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define N 4
- using namespace std;
- int max;
- bool is_safe(int board[N][N], int r, int c) {
- for(int j=0 ; j<N ; j++) { ///Row check
- if(board[r][j]==1)
- return false;
- }
- for(int i=0 ; i<N ; i++) { ///Column check
- if(board[i][c]==1)
- return false;
- }
- for(int i=r,j=c ; ; i++,j++) { ///Down Right diagonal check
- if(i==N-1 || j==N-1)
- break;
- if(board[i][j]==1)
- return false;
- }
- for(int i=r,j=c ; ; i--,j--) { ///Upper Left diagonal check
- if(i==N-1 || j==N-1)
- break;
- if(board[i][j]==1)
- return false;
- }
- for(int i=r,j=c ; ; i++,j--) { ///Down Left diagonal check
- if(i==N-1 || j==N-1)
- break;
- if(board[i][j]==1)
- return false;
- }
- for(int i=r,j=c ; ; i--,j++) { ///Upper Right diagonal check
- if(i==N-1 || j==N-1)
- break;
- if(board[i][j]==1)
- return false;
- }
- return true;
- }
- int solve(int board[N][N],int col,int cnt) {
- if(col==N) { ///Base Case
- return max;
- }
- for(int i=0 ; i<N ; i++) {
- if(is_safe(board,i,col)) {
- board[i][col]=1;
- cnt++;
- if(max<cnt) max=cnt;
- solve(board,col+1,cnt);
- board[i][col]=0;
- cnt--;
- }
- }
- return max;
- }
- int main() {
- int board[N][N]={0,0,0,0
- 0,0,0,0
- 0,0,0,0
- 0,0,0,0};
- max=0;
- cout << solve(board,0,0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement