Мне было дано задание разработать алгоритм выдачи штампов для почтовой марки штамп торгового автомата. Мне нужно написать функцию, которая вернет минимальное количество штампов для заданного значения . Мы можем предположить, что в машине всегда будет отметка в один цент.Почтовый штамп Торговый автомат
Прототип функции выглядит следующим образом:
int min_number_of_stamps (
const int* array, /* input array of sorted stamp values */
size_t array_size, /* number of elements in array */
int request /* desired value to of stamps */
);
Функция возвращает минимальное количество марок для данного значения. Например, если массив был [90,30,24,15,12,10,5,3,2,1]
, а запрос был 32
, выход должен быть 2
, one 30 cent stamp
и one 2 cent stamp
.
Может ли кто-нибудь помочь мне решить этот вопрос или дать мне некоторый намек на это?
Вы начинаете с первым значением отметки (самым высоким) и продолжайте идти, пока вы можете найдите значение штампа меньше, чем запрос. Затем вы просто добавляете эту марку в массив, вычитаете из запроса и повторяете до тех пор, пока запрос не будет равен нулю. –
Я бы предложил придумать общий алгоритм для решения проблемы сначала, * затем * беспокоясь о том, как программировать его на Java. Поскольку вопросы читаются сейчас, это звучит так, будто вы в основном хотите, чтобы вся работа была выполнена для вас. –
@ RiverC Скажите, что ваши наименования [90, 80, 70, 1]. И ваш запрос 140. Подойдя к тому, что вы предложили, я получаю 90 + (50 x 1). Я ожидал бы получить 70 + 70. –