Несколько способов оптимизации расчёта сдачи при большом количестве монет:
- Жадный алгоритм. 23 Нужно выдавать сдачу по одной монете с наибольшим номиналом, который не превышает оставшуюся сумму. 2
- Динамическое программирование. 12 Алгоритм принимает список действующих номиналов монет, сумму сдачи и список из минимальных количеств монет, необходимых для выдачи каждого значения. 1 В этом варианте решения сложность по времени будет O(n), но требуется дополнительная память на n сумм сдачи. 2
- Динамическое программирование с запоминанием (memoization). 2 В этом случае сложность по времени будет O(n), но также потребуется дополнительная память на n сумм сдачи. 2
Выбор метода зависит от конкретных условий задачи.