o código deveria retornar o valor máximo que a mochila comporta utizando a variavel pesoMaximo,
os pesos estao no vetor itens, a matriz tridimensional chamada resultado armazena o valor de cada iteracao(metodo dinamico),
o codigo funciona corretamente, porem, ao utilizar a sequencia a seguir ele
simplesmente nao funciona corretamente, informando um valor inferior
pesoMaximo = 10;
itens = {0, 8, 11, 2}
obs: o mesmo codigo sem utilizar metodo dinamico funciona corretamente
public int dinamica(int numeroItem, int comOuSem, int pesoAtual) {
this.iteracoes++;
int novoPeso, pesoCom, pesoSem;
if (numeroItem == this.itens.length) {
return pesoAtual;
}
novoPeso = pesoAtual + this.itens[numeroItem] * comOuSem;
if (resultado[numeroItem][comOuSem][pesoAtual] == 0) {
resultado[numeroItem][comOuSem][pesoAtual] = novoPeso;
pesoCom = this.dinamica(numeroItem + 1, 1, novoPeso);
} else {
pesoCom = resultado[numeroItem][comOuSem][pesoAtual];
}
if (pesoCom == this.pesoMaximo) {
return pesoCom;
}
if(resultado[numeroItem][comOuSem][pesoAtual] == 0){
resultado[numeroItem][comOuSem][pesoAtual] = novoPeso;
pesoSem = this.dinamica(numeroItem + 1, 0, novoPeso);
}else{
pesoSem = resultado[numeroItem][comOuSem][pesoAtual];
}
if (pesoCom > this.pesoMaximo) {
return pesoSem;
}
if (pesoCom > pesoSem) {
return pesoCom;
} else {
return pesoSem;
}
}