У вас есть набор монет 5 ¢, 10 ¢, 20 ¢, 50 ¢, 1 $, 2 $ и ограниченное количество каждого номинала. Когда вы платите за определенную сумму, есть две возможности: вы платите правильную сумму или платите больше, чем нужно, и получаете правильное изменение от клерка. Как вы можете свести к минимуму количество монет, которые меняют руки (т. Е. Свести к минимуму количество монет, которые вы даете, а также количество возвращенных монет). Предположим, что сумма всегда выплачивается, а клерк имеет бесконечное количество монет, плюс он всегда выбирает наиболее эффективные способы вернуть изменения.Минимум количества монет, которые меняют руки
Я полагаю, что для минимизации количества монет, сменяющих руки, вы должны минимизировать количество монет, которые вы даете, и количество полученных монет. Количество полученных монет может быть сведено к минимуму с использованием обычного алгоритма замены монет, однако я не знаю, как свести к минимуму набор изменений с учетом фиксированного набора монет.
Для полного описания проблемы: UVA Online Judge
Это интересное упражнение, но какие проблемы вы имеете с этим? Что вы пробовали? Где вы застряли? Где ваш код? – John
Спасибо, я отредактировал свое описание. –
Для этого конкретного набора монет работает жадный алгоритм (попробуйте доказать это). В общем, это сложнее. – us2012