N-Queen Arrangement Problem [Backtracking]
Programming Language - Java
public static boolean saveTheQueen(int[][] board, int col) {
if(col>= board.length) return true;
for (int row=0; row< board.length; row++) {
/* Constrains */
if(diagonals(board, row, col)) {
board[row][col] = 1;
/* Recursion */
if(saveTheQueen(board,col+1)) return true;
/* Backtracking */
board[row][col] = 0;
}
}
return false;
}
static boolean diagonals(int[][] board, int row, int col) {
for (int i=0; i<col; i++)
if(board[row][i] == 1) return false;
for (int x=row, y=col;x>=0 && y>=0; x--, y--)
if (board[x][y] == 1) return false;
for (int x=row, y=col; y>=0 && x<board.length; x++, y--)
if(board[x][y] == 1) return false;
return true;
}
Comments
Post a Comment