Problema del cambio de monedas

El problema del cambio de monedas consiste en dada una lista ms de tipos de monedas (con infinitas monedas de cada tipo) y una cantidad objetivo x, calcular el número de formas de obtener y usando los tipos de monedas de ms. Por ejemplo, con monedas de 1, 5 y 10 céntimos se puede obtener 12 céntimos de 4 formas

Definir las funciones

tales que

  • (numeroCambios ms x) es el número de formas de obtener x usando los tipos de monedas de ms. Por ejemplo,

  • sucCambios es la sucesión cuyo k-ésimo término es el número de cambios de k usando monedas de 1, 2, 5 y 10 céntimos. Por ejemplo,

  • (grafica_cambios n) dibuja la gráfica de los n primeros términos de la sucesión sucCambios. Por ejemplo, (grafica_cambios 50) dibuja
    Problema_del_cambio_de_monedas

Soluciones

8 Comentarios

  1. Una propuesta usando árboles,

    1. Otra propuesta de numeroCambios usando secuencias en lugar de árboles,

  2. — Otra forma de obtener la sucesión sucCambios. Basada en la OEIS —

    sucCambios2 1 = 1
    sucCambios2 2 = 1
    sucCambios2 3 = 2
    sucCambios2 4 = 2
    sucCambios2 5 = 3
    sucCambios2 6 = 4
    sucCambios2 7 = 5
    sucCambios2 8 = 6
    sucCambios2 9 = 7
    sucCambios2 10 = 8
    sucCambios2 11 = 11
    sucCambios2 12 = 12
    sucCambios2 13 = 15
    sucCambios2 14 = 16
    sucCambios2 15 = 19
    sucCambios2 16 = 22
    sucCambios2 17 = 25
    sucCambios2 n = sucCambios2(n-2) + sucCambios2(n-5) – sucCambios2(n-7) + sucCambios2(n-10) – sucCambios2(n-12) – sucCambios2 (n-15) + sucCambios2(n-17) +1

    lista_sucCambios2 = [sucCambios2 n | n <- [1..]]

Escribe tu solución