¿Cómo se le ocurrió al autor la fórmula (programación dinámica) en la editorial CIELRCPT – Editorial (Ciel y Receipt)?

Este problema es similar al problema de cambio de moneda.
Deje que dp [m] sea el número mínimo de monedas de las denominaciones d1, d2, …, dk necesarias para realizar cambios en la cantidad de C. En la solución óptima para realizar un cambio para la cantidad m, debe existir alguna primera moneda di, donde di <C. Además, las monedas restantes en la solución deben ser la solución óptima para realizar el cambio para (C-di).
Por lo tanto, si di es la primera moneda en la solución óptima para realizar un cambio para la cantidad m, entonces
dp [C] = 1 + dp [C – di] es decir, una moneda más dp [C – di] monedas para realizar un cambio óptimo para la cantidad (C – di).
No sabemos qué moneda es di, por lo que verificamos todas las posibilidades (sujeto a la restricción de que di <m), y el valor de la solución óptima debe corresponder al valor mínimo de 1 + dp [C – di].
Caso base dp [0] = 0
Recurrencia final:
dp [p] = 0 si C = 0
sino min (i: di 0

PD: El editorialista había olvidado mencionar la restricción de di <C en el editorial.
También puede probar esta pregunta SPOJ.com – Problema NFURY. Concepto similar

Este problema es solo una variación del problema de cambio de moneda. Suponemos que hay disponible un suministro ilimitado de cada artículo. P es la cantidad a gastar.

F (P) = min {F (P – d1), F (P – d2),…, F (P – dK)} + 1.
Lo que esto implica es seleccionar un elemento de 12 elementos (cuyo costo es uno de d0 a d11 ). Esto reducirá el saldo restante a ( P- costo del artículo seleccionado). Ahora tenemos un subproblema sobre la mejor manera de gastar el resto (costo P del artículo seleccionado).
Dado que el problema aquí es un problema de minimización, la relación de recurrencia anterior dice que el primer elemento seleccionado debe minimizar el no de elementos del menú> Este proceso continúa en el subproblema, es decir, F ( P- costo del elemento seleccionado).

More Interesting

¿Cuál es el algoritmo de programación del juego para una temporada regular de la NBA?

¿En qué se diferencia una tabla hash de una lista vinculada o una matriz?

¿Debo compartir un nuevo algoritmo de clasificación que escribí? ¿Existe algún potencial monetario en un algoritmo? De ser así, ¿cómo capitalizo?

¿Qué debe aprender primero, algoritmos y DS o un lenguaje de programación?

Cómo aprender estructuras de datos y algoritmos de manera efectiva para que pueda ser mejor en la programación competitiva a nivel principiante

Cómo ordenar la matriz de tipos primitivos en orden descendente en Java

Cómo hacer un programa que imprima potencias de 2 hasta n en C ++

¿Es así como se elimina de un árbol de búsqueda binario cuando un padre tiene dos subárboles?

¿Qué algoritmo se debe usar para encontrar que hay una conexión en cada dos vértices en un gráfico dirigido?

¿Cuál es la intuición detrás del algoritmo de clasificación rápida de múltiples claves?

¿Cuál: Estructura de datos y pensamiento algorítmico con Python (Narasimha Karumanchi) o Estructuras de datos y algoritmos en Python (Michael T. Goodrich)?

¿Cuál es la elección ideal de algoritmos, bibliotecas en PNL y aprendizaje automático para construir un bot de chat?

¿Qué debe saber todo programador sobre tablas hash y funciones hash?

Cómo averiguar si existen dos elementos en una matriz ordenada cuya suma es igual a algún número predefinido

¿Para qué se utiliza el algoritmo de fuerza bruta?