Ejercicios resueltos
Ejercicios resueltos
Ejercicios resueltos
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Solución Ejercicio 1. Programación dinámica (cont.)<br />
Una posible solución es considerar tantos casos como monedas de<br />
valor di estén disponibles, y después calcular el mínimo de todos ellos<br />
C[i, j] = mín (k + C[i − 1, j − di ∗ k])<br />
0≤k≤mi<br />
donde mi es el número de monedas disponibles de valor di.<br />
La recurrencia<br />
⎧<br />
completa es:<br />
0 si j = 0<br />
+∞ si j < 0<br />
+∞ si i = 1<br />
⎪⎨<br />
y (j < di o j > di ∗ mi<br />
C(i, j) =<br />
o j mod di = 0)<br />
⌊j/di⌋ si i = 1 y j mod di = 0<br />
y j ≤ di ∗ mi<br />
⎪⎩ mín (k + C[i − 1, j − di ∗ k]) en otro caso<br />
0≤k≤mi<br />
Para cada uno de los valores de k (desde 1 hasta mi) se considera<br />
tomar las k monedas de valor di, en lugar de hacerlo de una en una<br />
como en la versión original del problema de devolución del cambio<br />
Yolanda García, Jesús Correas (DSIC - UCM) 3 / 32