Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
899c40d
commit 411afe3
Showing
2 changed files
with
132 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
/* | ||
* @author : dhruv-gupta14 | ||
* @date : 12/01/2019 | ||
*/ | ||
|
||
#include<iostream> | ||
using namespace std; | ||
#define N 8 | ||
|
||
void printBoard(int board[N][N]) { | ||
for (int i = 0; i < N; i++) { | ||
for (int j = 0; j < N; j++) | ||
cout << board[i][j] << " "; | ||
cout << endl; | ||
} | ||
} | ||
|
||
bool isValid(int board[N][N], int row, int col) { | ||
for (int i = 0; i < col; i++) //check whether there is queen in the left or not | ||
if (board[row][i]) | ||
return false; | ||
for (int i=row, j=col; i>=0 && j>=0; i--, j--) | ||
if (board[i][j]) //check whether there is queen in the left upper diagonal or not | ||
return false; | ||
for (int i=row, j=col; j>=0 && i<N; i++, j--) | ||
if (board[i][j]) //check whether there is queen in the left lower diagonal or not | ||
return false; | ||
return true; | ||
} | ||
|
||
bool solveNQueen(int board[N][N], int col) { | ||
if (col >= N) //when N queens are placed successfully | ||
return true; | ||
for (int i = 0; i < N; i++) { //for each row, check placing of queen is possible or not | ||
if (isValid(board, i, col) ) { | ||
board[i][col] = 1; //if validate, place the queen at place (i, col) | ||
if ( solveNQueen(board, col + 1)) //Go for the other columns recursively | ||
return true; | ||
|
||
board[i][col] = 0; //When no place is vacant remove that queen | ||
} | ||
} | ||
return false; | ||
} | ||
|
||
bool checkSolution() { | ||
int board[N][N]; | ||
for(int i = 0; i<N; i++) | ||
for(int j = 0; j<N; j++) | ||
board[i][j] = 0; | ||
|
||
if ( solveNQueen(board, 0) == false ) { | ||
cout << "Solution does not exist"; | ||
return false; | ||
} | ||
printBoard(board); | ||
return true; | ||
} | ||
|
||
int main() { | ||
checkSolution(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters