Home Algoritmos y Estructuras de Datos (VJ1215)

Curso 2023/2024

Ayuda del ejercicio 6 del tema 5.3

Sea máximoValor(i, p) el máximo valor que podemos sumar eligiendo entre los objetos del 0 al i, ambos inclusive, sin que el peso de los objetos elegidos supere p. El resultado que nos piden es máximoValor(n - 1, pesoMáximo), siendo n la cantidad de objetos.

Por ejemplo, con estos datos del enunciado:

objeto01234
peso52167
valor180060010022002800
máximoValor(4, 15) = max(2800 + máximoValor(3, 8), // Coger el objeto 4
                         máximoValor(3, 15))       // No coger el objeto 4
...
	

En general, si i > 0 y peso[i] ≤ p, para obtener máximoValor(i, p) tenemos que decidir si cogemos o no el objeto i y elegir la mejor de las dos opciones:

Completa los casos que faltan, escribe las ecuaciones recursivas para calcular máximoValor(i, p) siguiendo ese razonamiento, y después comprueba el resultado pulsando el enlace "Más ayuda".

Más ayuda

Si i > 0 y peso[i] ≤ p,
   máximoValor(i, p) = max(valor[i] + máximoValor(i - 1, p - peso[i]),
                           máximoValor(i - 1, p))

Si i > 0 y peso[i] > p,
   máximoValor(i, p) = máximoValor(i - 1, p)

Si i = 0 y peso[i] ≤ p,
   máximoValor(i, p) = valor[i]

Si i = 0 y peso[i] > p,
   máximoValor(i, p) = 0