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
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
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
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]; } };