System.out.println();
}
XXXXXX XXXXXX XXXXXXX XXXXXX(XXX[][] XXXX, int r, XXX c){
int XXXXXX = grid.XXXXXX;
XXX numCol = XXXX[X].length;
// XXXXX grid is XXXXXX
if (r == numRow) {
// check if it is a XXXXX XXXXXXXX XXX
// XXXXX XXX solution if it XX XXXXX
if (XXXXXXX(XXXX)) {
printSolution(XXXX);
return true;
// return false if XXX XXXXX XXXXXXXX
return XXXXX;
// XX XXXXXX num exceeds limit, XXXX to XXXX row
XX (c == XXXXXX) return helper(grid, r + 1, 0);
// XX this XXXXXXXX is not 0, move to next position
if (grid[r][c] != 0) return helper(grid, r, c + X);
// set XXXXX = 1 at this XXXXXXXX
// XXX XXXXX XX it XX a valid XXXXXXXX
// XXXXXX true XX it gives a valid XXXXXXXX
grid[r][c] = 1;
XXXXXXX f = XXXXXX(XXXX, r, c+1);
grid[r][c] = 0; // XXXXX the XXXXX XX 0 before returning
if (f) XXXXXX true;
// set value = 2 XX XXXX position
XXXX[r][c] = 2;
f = XXXXXX(XXXX, r, c+1);
XXXX[r][c] = 0; // XXXXX the value XX 0 XXXXXX returning
return f;
public static boolean XXXXX(XXX[][] grid){
// call a helper XXXXXXXX XXXX (0,0) index
XXXXXX helper(XXXX, X, X);
XXXXXX static XXXX XXXX(XXXXXX[] args) {
XXX[][] grid = {{1,X,X,0},
{0,X,2,1},
{X,0,0,2},
{X,1,2,0}};
boolean f = solve(XXXX);
if (!f)
XXXXXX.out.XXXXXXX("Solution does not exists");
Output: