public void solveSudoku(char[][] board) {
        boolean [][] rows = new boolean[9][9];
        boolean [][] cols = new boolean[9][9];
        boolean [][] cells = new boolean[9][9];

        for(int i = 0; i < 9; ++i){
            for(int j = 0; j < 9; ++j){
                if(board[i][j] == '.') continue;
                int num = board[i][j] - '0' - 1;
                rows[i][num] = true;
                cols[j][num] = true;
                cells[3*(i/3)+(j/3)][num] = true;
            }
        }
        solveSudokuRec(board, rows, cols, cells, 0);
    }