На самом деле я был тем человеком, который в итоге реализовал этот, поэтому я решил, что лучше всего опубликовать конечный результат. Это не красиво, но быстро и не имеет циклов или массивов. Я не считаю это решением концептуального вопроса, но оно решает практическую проблему.
В большинстве случаев фактическое использование ограничено диапазоном от 5 до 200 долларов. Большинство людей обычно не вынимают 500 долларов наличными на регулярной основе:)
Я решил посмотреть на различные случаи от 0 до 5 долларов, от 5 до 10 долларов. , , От 45 до 50 долларов. У нас было 3 кнопки, поэтому в каждом случае первая кнопка (самая низкая) будет следующей ценой в 5 долларов выше цены. Таким образом, если это было 7,45 доллара, то первая кнопка была 8 долларов, 13,34 доллара -> 15 долларов, 21,01 доллара -> 25 долларов.
Это оставляет 2-ю и 3-ю кнопки. Каждый случай имеет очевидные ответы, учитывая стандартные значения 5, 10, 20, 50 долларов. Например: Глядя на $ 24,50, затем 1 -> 25 долларов, 2 -> 30 долларов, 3 -> 40 долларов. Их можно найти, используя таблицу и здравый смысл.
Я также обнаружил, что использование значений, превышающих 50 долларов, может просто соответствовать их аналогам ниже 50 долларов. то есть: $ 72,01 будет таким же ответом, как $ 22,01, и так далее. Единственное предостережение с числами больше 60 и меньше 70. В этом случае требуется возможность обработки 4 долларов 20 счетов.
Алгоритм также хорошо масштабируется в диапазоне от 100 до 200 долларов. Выше это редкий случай в рознице.