Обмен денег
Эта задача была взята из CourseraСпециализация по структурам данных и алгоритмам, а именно изКурса по набору инструментов для алгоритмов, неделя 3: >Жадные алгоритмы, которые я недавно завершил. Если вы проходите этот курс или планируете его пройти, пожалуйста, не заглядывайте вперед на решение, так как оно будет противоречить Кодексу чести и не принесет вам никакой пользы.
Введение проблемы
В этой задаче вы разработаете алгоритм оптимального обмена денег.
описание проблемы
Задача. Цель этой задачи — найти минимальное количество монет, необходимое для замены входного значения (целого числа) на монеты номиналом 1, 5 и 10.
Формат ввода: ввод состоит из одного целого числа m
Ограничения: 1 ≤ m ≤ 10^3
Формат вывода: Выведите минимальное количество монет достоинством 1, 5, 10, что изменяет m.
Ограничения по времени: C: 1 сек, C++: 1 сек, Java: 1,5 сек. , Python: 5 сек. C#: 1,5 секунды, Haskell: 2 секунды, JavaScript: 3 секунды, Ruby: 3 секунды, Scala: 3 секунды.
Ограничение памяти: 512 МБ
Образец 1
Ввод:
2
Вывод:
2
Объяснение:
2 = 1 + 1.
Образец 2.
Ввод:
28
Вывод:
6
Объяснение:
28 = 10 + 10 + 5 + 1 + 1 + 1.
Что делать
Чтобы разработать жадный алгоритм для этой задачи, поэкспериментируйте с небольшими значениями m (рассмотрите, например, примеры тестов).
Мое решение:
Объяснение:
Ну, это очень простой алгоритм, на самом деле. Нет необходимости реализовывать сложный алгоритм, этот наивный алгоритм прекрасно справляется со своей задачей. Если вы этого не понимаете, просто ответьте на эту статью, и я обязательно дам вам ответ и, надеюсь, удовлетворительное объяснение.
Если вы можете придумать какой-либо другой способ улучшить этот алгоритм или указать на то, что, по вашему мнению, я сделал неправильно, мы будем добро пожаловать, чтобы связаться со мной, ответив этому и указывая на ошибки. Если вам нравится это решение, нажмите кнопку «Рекомендовать» ниже, это много значит для меня. Спасибо.