Varias monedas forman un cierto valor nominal (problema de mochila)

Monedas Dado un número ilimitado de monedas, el valor de la moneda es de 25 puntos, 10 puntos, 5 puntos y 1 punto. Hay varias formas de escribir código para calcular n puntos. (El resultado puede ser grande, debe moldear el resultado a 1000000007)
 Ejemplo 1:
 Entrada: n = 5
 Salida: 2
 Explicación: Hay dos formas de compensar la cantidad total:
5 = 5
5 = 1 + 1 + 1 + 1 + 1

 Ejemplo 2
 Entrada: n = 10
 Salida: 4
 Explicación: Hay cuatro formas de compensar la cantidad total:
10 = 10
10 = 5 + 5
10 = 5 + 1 + 1 + 1 + 1 + 1
10 = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
Fuente:
Enlace (LeetCode) : https://leetcode-cn.com/problems/coin-lcci
 
Plantilla: tipos de monedas circulando afuera
Internamente, dp [i] = dp [iv] + dp [i] // v es el valor de la moneda seleccionada actualmente
Solución de clase {
 public :
     int waysToChange ( int n) {
         int mod = 1e9 + 7 ;
        int nums [ 4 ] = { 1 , 5 , 10 , 25 };
        int dp [ 1000002 ]; 
        memset (dp, 0 , sizeof (dp)); 
        dp [ 0 ] = 1 ;
        para ( int i = 0 ; i < 4 ; i ++ ) 
        {
            int v = nums [i];
            para ( int j = v; j <= n; j ++ ) 
            { 
                dp [j] = (dp [jv] + dp [j])% mod; 
            } 
        } 
        return dp [n]; 

    } 
};

 

Supongo que te gusta

Origin www.cnblogs.com/Charls/p/12761347.html
Recomendado
Clasificación