Я изо всех сил пытаюсь разработать алгоритм для следующей задачи .
- У меня есть N клиентов, у которых есть определенная сумма наличных.
- У меня есть N товаров, которые можно купить за наличные.
- Каждый продукт можно приобрести только один раз.
- Клиенты могут приобрести любое количество продуктов.
Мое текущее решение немного провалилось, и нужно опубликовать огромное количество кода (хотя я могу по запросу). Я опишу этот процесс ниже:
- Каждому покупателю предоставляется корзина и история перестановок. Каждая перестановка считается слотом.
- Каждый элемент повторяется.
- Для каждого элемента проверяются все клиенты, чтобы узнать, могут ли они его приобрести. . Это оценивается по следующим критериям:
** Могут ли они себе это позволить (на основе оставшихся денежных средств после текущей стоимости корзины)
** Совершали ли они покупки в предыдущей комбинации - Если можно купить, добавить в текущую корзину и сохранить факт покупки для этого слота.
- Когда все предметы будут повторены, перейдите к следующему слоту.
- Повторите вышеизложенное.
Клиент А имеет 100 монет, Клиент Б имеет 30 монет, Клиент У C есть 25 монет
Товар A продается за 75 монет, Продукт B продается за 25 монет, Продукт C продается за 10 монет, Продукт D продается за 50 монет
Перестановка 0 будет такой:
- Клиент А покупает товар А за 75 монет. Осталось 25 монет.
- Клиент Б покупает товар Б за 25 монет. Осталось 5 монет.
- Клиент C покупает товар C за 10 монет. Осталось 15 монет
Осталось 45 монет
- Клиент А покупает продукт A и C за 85 монет. Осталось 15 монет.
- Клиент Б покупает товар Б за 25 монет. У него осталось 5 монет.
- Клиент В ничего не покупает. У него осталось 25 монет
Осталось 45 монет
Будем благодарны за любую помощь.
Подробнее здесь: https://stackoverflow.com/questions/788 ... -customers