gifts2017

Подбор слагаемых для нужной суммы

Опубликовал Алексей Бакханд (BackHand001) в раздел Программирование - Универсальные функции

Функция подбора нескольких чисел для получения заданной суммы с неограниченной глубиной перебора вариантов.
Количество слагаемых неизвестно и они могут содержать погрешность, возникшую в результате округления или расчета процентов.

Столкнулся с такой проблемой:

Клиенты оформляют в магазине кредиты, через некоторое время кредитное учреждение перечисляет нам деньги по нескольким кредитам одной суммой, за вычетом процентов. !!! И без уведомления по каким кредитам была оплата !!! 

Пришлость написать функцию, которая из всех непогашенных сумм, выбирает нужные. С учетом того, что кредитная организация может округлять эти суммы, одной ей известным способом.

Для демонстрации функции, приделал небольшую форму.

Думаю, что найдется еще много подобных случаев, где эта функция может пригодиться.

Ну например (почерпнуто из интернета):

  •  мы выгрузили из интернет-банка все платежи, которые поступили на наш счет за последний месяц. Один из клиентов разбивает сумму своего платежа на несколько отдельных счетов и платит частями. Мы знаем общую сумму оплаты. Надо подобрать те суммы в истории платежей, которые дадут в общем заданное значение.
  • У нас есть несколько рулонов стали (линолеума, бумаги...), из которых надо подобрать под заказ те, что дадут заданную длину.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
ПодборЗначений.epf
.epf 10,06Kb
28.05.14
50
.epf 10,06Kb 50 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Denis Bazin (Bazin) 15.05.15 14:58
Попробовал 23 слагаемых на сумму заведомо больше суммы всех слагаемых (чтоб перебрал все варианты) , результат - 15 минут.
2. Алексей Бакханд (BackHand001) 19.05.15 11:12
(1) Bazin,
Спасибо за тестирование, надо было такую проверку на входе сделать, у нас такой ситуации не возникало.
Эта примочка для конкретной прикладной задачи, скорость играла второстепенное значение.
С Уважением, Алексей.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа