Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Para el problema de las monedas con programación dinámica se necesita crear un algoritmo
que permita a una máquina expendedora devolver el cambio mediante el menor número de
monedas posible. Mediante la programación dinámica se solucionará el caso en el que el número de
monedas de cada tipo es ilimitado. En el problema de las monedas mediante el algoritmo voraz
el que el número de monedas es ilimitado.
Descripción
Supongamos que se tienen monedas de valor 1, 4 y 6 y que se debe devolver una cantidad
correspondiente al valor 8. Siguiendo el método de la programación dinámica, se rellenará una
tabla con las filas correspondientes a cada valor para las monedas y las columnas con valores desde
el 1 hasta el 8. Cada posición (i, j) de la tabla nos indica el número mínimo de monedas requeridas
para devolver la cantidad j con monedas con valor menor o igual al de i:
____ 1 2 3 4 5 6 7 8
m1=1 1 2 3 4 5 6 7 8
m2=4 1 2 3 1 2 3 4 2
m3=6 1 2 3 1 2 1 2 2
Ejemplo para la posición i = 2 y j = 7, se requiere una moneda tipo 2 con valor 4 y tres monedas de
tipo 1 con valor uno, por lo tanto en la tabla el número de monedas en la posición (2,7) sera 1 + 3 =
4.
Algoritmo
Pseudocódigo
Como parámetros de entrada, la función toma C, que corresponde con la cantidad a devolver, y un
vector M de monedas, que almacena el valor de cada tipo. Devuelve num, el número de monedas
necesarias para realizar la devolución.
Código Java
return matriz_cambio[monedas.length][cantidad_devuelta];
}