Я работаю над некоторыми материалами для динамического программирования. Мне нужно придумать, как должны быть разделены подзадачи, выработать базовый случай и придумать рекурсивную формулу.Алгоритм подкомбинации динамического программирования
Приведенные n положительных целых чисел a1, a2, ..., an, число k и цель W, мы хотим выбрать подмножество T с точно k элементами, сумма которых ближе всего к W. Каждый элемент может быть выбран только один раз. Определите подзадачу с тремя параметрами (т. Е. C [x, y, z] = ...).
Я работал только с несколькими примерами динамического программирования и никогда не работал с одним, которому требуется 3 параметра при определении подзадачи. Я действительно потерялся здесь. Если кто-нибудь может осветить какой-то свет, который будет велик.
Моя догадка за то, что подзадача должна быть это:
С [х, у, г] = х число элементов из {a1, ... ау}, где сумма точно г
Но я понятия не имею, правильно ли это.
нет s не является суммой значений элементов –
Хм, как бы только рекурсивная функция ищет это ? Я привык разрабатывать рекурсивную функцию и переходить к псевдокоду оттуда. Можно ли это извлечь из этого? Некоторые по строкам C [x, y, z] = {...} – Tesla
@Telsa: добавлена петля и рекурсивная функция –