encontrar uma solução para soma de subconjunto usando programação dinâmica

O que eu quero fazer

Eu quero encontrar um subconjunto de uma matriz que soma a um alvoT. Eu também quero usar uma abordagem de programação dinâmica (e uma solução bottom-up) para fazer isso.

O que eu tenho atualmente

Atualmente eu só encontrei uma maneira de ver se entre todos os subconjuntos de tamanhoN, havendo ou não pelo menos um subconjunto que tenha a soma desejada. Veja o código abaixo.

public boolean solve(int[] numbers, int target) {

    //Safeguard against invalid parameters
    if ((target < 0) || (sum(numbers) < target)){
        return false;
    }

    boolean [][] table = new boolean [target + 1] [numbers.length + 1]  ;

    for (int i = 0; i <= numbers.length; ++i) {
        table[0][i] = true;
    }


    /* Base cases have been covered. 
     * Now look set subsets [1..n][target] to be true or false.
     * n represents the number of elements from the start that have a subset 
     * that sums to target
     */
    for (int i = 1; i <= target; ++i){
        for (int j = 1; j <= numbers.length; ++j){
            /* Mark index j as one of the numbers in the array
             *  which is part of the solution with the given subtarget */
            table [i][j] = table[i][j-1];
            if (i >= numbers[j-1])
                table[i][j] = table[i][j] || table[i - numbers[j-1]] [j-1];
        }
    }

    return table[target][numbers.length];
}

Onde estou preso

Agora eu sei que seé uma solução, mas não consigo pensar em uma maneira de realmente produzir uma solução.

Eu não estou procurando alguém para me fornecer código específico, mas pseudocódigo é bem-vindo como são dicas de como uma solução pode ser salva.

questionAnswers(3)

yourAnswerToTheQuestion