Какой есть алгоритм вывода средств с банкомата?
разбирайся
в общем виде задача решения не имеет, кстати
Приоритет алгоритма – стараться выровнять кол-во остающихся купюр.
Надо посчитать разброс количеств номиналов после выдачи, и выбрать вариант, после которого этот разброс минимален среди всех вариантов. Под словом «разброс» понимать среднее квадратичное отклонение.
Когда каких-то купюр не осталось, надо показывать предупреждение, что «Банкомат выдаёт купюры достоинством X и Y», и если запрошенная сумма не составляется имеющимся набором, предлагать ближайшую больше, и ближайшую меньше, которые выдать может.