15.05.2013 Views

Ejercicios resueltos

Ejercicios resueltos

Ejercicios resueltos

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!