Es similar a una función DP sin bucle. Si comprende los conceptos de DP, la siguiente explicación debería ser fácil de obtener:
En DP, tiene una función que toma todos los parámetros juntos y se denomina estado que representa completamente el problema actual. Para este problema, debe calcular algunos otros subproblemas (problemas más pequeños) para poder encontrar la solución óptima para el problema actual.
Encontrar la solución óptima se realiza principalmente seleccionando la “mejor” transición. Por ejemplo, en un problema de mochila con el estado (elemento, resto de peso), solo tiene dos transiciones:
- ¿Se puede ordenar una lista de números en un número menor de pases que el indicado por la notación Big-O?
- ¿Hay algún proyecto de aprendizaje automático de finanzas que pueda ejercer con Python?
- ¿Qué algoritmo de ML debo usar para una aplicación de selección de automóviles basada en Tinder?
- ¿Cuál es el menor número de operaciones necesarias para ordenar una matriz de n objetos arbitrarios?
- ¿Cuáles son algunos algoritmos nuevos e interesantes en bioinformática / informática genómica?
- tomar el artículo actual Entonces, la solución será el valor [item] + sol (nextItem, restantesWeight – weight [item]
- omitir el elemento actual Entonces, la solución será sol (nextItem, restantesWeight)
Para el artículo actual, dado que estamos maximizando el valor total, elegiremos la transición más grande.
En el problema mencionado, sucedió que tiene más de dos transiciones: para cada prenda, tiene un conjunto de modelos y desea elegir solo un modelo. Por lo tanto, debe encontrar qué transición (qué modelo) generará el máximo ahorro.
Si no recibió mi explicación, aquí hay algunos enlaces que podrían ayudarlo.
- Tutorial de Topcoder
- Wiki brillante
- Tutorial HackerRank