-
Notifications
You must be signed in to change notification settings - Fork 0
Simulacro 03 Coin Change
Joel Alvarez edited this page Jul 12, 2026
·
1 revision
Practicar programación dinámica de minimización, definiendo estado, transición y centinela antes de codificar.
Duración total: 45 minutos.
- No consultar
src/patterns/dynamic_programming.rsantes de terminar. - Escribir primero los casos de prueba.
- Definir explícitamente qué significa
dp[amount]. - Al terminar, registrar retro en
notes/review-queue.md.
Dado un arreglo de denominaciones coins y un amount, devolver el menor número de monedas necesario para formar ese monto.
Si no se puede formar el monto, devolver -1.
Se puede usar cada moneda tantas veces como sea necesario.
coins = [1, 2, 5]
amount = 11
resultado = 3
coins = [2]
amount = 3
resultado = -1
coins = [1]
amount = 0
resultado = 0
Antes de codificar, responder:
- ¿Las monedas pueden repetirse ilimitadamente?
- ¿Puede
amountser0? - ¿Puede haber monedas con valor
0o negativo? - ¿Se necesita devolver combinación o solo cantidad mínima?
- Definir
dp[x]como la menor cantidad de monedas para formarx. - Inicializar
dp[0] = 0. - Usar un centinela mayor que cualquier respuesta posible.
- Para cada monto, probar cada moneda que no exceda el monto.
- Convertir el centinela final a
-1si el monto sigue inalcanzable.
-
dp[0]siempre es0. - Si
dp[x]es centinela,xtodavía no es alcanzable. - La transición
dp[x] = min(dp[x], dp[x - coin] + 1)solo es útil six - coinya es alcanzable.
Crear o reescribir tests equivalentes a:
#[test]
fn returns_minimum_number_of_coins() {
assert_eq!(coin_change(vec![1, 2, 5], 11), 3);
}
#[test]
fn returns_minus_one_when_amount_cannot_be_formed() {
assert_eq!(coin_change(vec![2], 3), -1);
}
#[test]
fn returns_zero_for_zero_amount() {
assert_eq!(coin_change(vec![1, 2, 5], 0), 0);
}- Complejidad temporal: O(amount * coins).
- Complejidad espacial: O(amount).
- Usa centinela claro para estados inalcanzables.
- No confunde este problema con knapsack 0/1.
Completar:
| Dimensión | Puntaje 1-5 | Evidencia |
|---|---|---|
| Clarificación | ||
| Enfoque | ||
| Implementación | ||
| Pruebas | ||
| Comunicación |
Notas:
- Qué salió bien:
- Qué falló:
- Error que se repite:
- Acción de repaso:
- Fecha para repetir: