Меню

Главная

Статистика

 

 


Вычисление элементов многомерных таблиц.

Пример #2.

В магазине каждый товар имеет цену. Например, цена одного цветка равна 2 рубля, а цена одной вазы равна 5 рублей. Чтобы привлечь покупателей, магазин ввел скидки.

Скидка заключается в том, чтобы продавать набор одинаковых или разных товаров по пониженной цене. Например, три цветка за 5 рублей вместо 6, если покупать цветки по отдельности, или две вазы вместе с одним цветком за 10 рублей вместо 12 если покупать все по отдельности.

Сформулируем задачу в более общем виде. Пусть имеется М наборов, для которых действует система скидок. Каждый набор j, j=1,...M, характеризуется стоимостью ВMj и соответствующим количеством товара в наборе (j1,j2,j3,j4, j5). Покупка определяется набором Р=(р12,р34, р5), где значение pi, i=1,...,5 задает, сколько единиц товара должно находиться в корзине (1£pi£5). Оптимальное решение должно быть получено посредством скидок. Набор товаров, который требуется купить, нельзя дополнять ничем, даже если бы это снизило общую стоимость набора.

Напишите программу, вычисляющую наименьшую цену, которую покупатель должен заплатить за заданную покупку.

Обратите внимание, что общее количество товаров в корзине может быть не более 5*5=25 единиц. Поэтому можно рассмотреть функцию С(i1,i2,i3,i4,i5), 0£i1,i2,i3,i4,i5£5, и вычислить для нее наилучшие решения. Понятно, что С(0,0,0,0,0) равно 0. Вначале полагаем, что все остальные значения - достаточно большие числа (например, максимальная стоимость товара, умноженная на 25). Значения этих чисел должны обладать тем свойством, что их значения должны быть больше оптимального решения. После того, как начальные значения С определены, необходимо последовательно вычислить значения функции, используя для этого все возможные скидки. Поэтому, если имеется М наборов со стоимостью Вj и соответствующим количеством товара в наборе (j1,j2,j3, j4,j5), то
С(i1,i2,i3,i4,i5)= min{С(i1-j1, i2-j2, i3-j3, i4-j4,i5-j5) +Вj},
где минимум берется по всем наборам, для которых величины
i1-j1, i2-j2, i3-j3, i4-j4,i5-j5 - неотрицательные числа.


Упражнение #1.

В связи с открытием олимпиады по информатике N человек (N£10) решили устроить вечеринку. Для проведения вечеринки достаточно купить MF бутылок фанты, бананов и MC тортов. Требуется определить минимальный взнос участника вечеринки.

При покупке определенных наборов товара действует правила оптовой торговли: стоимость набора товара может отличаться от суммарной стоимости отдельных частей.

Написать программу, которая по входным данным определяет минимальный взнос участника вечеринки.

Входные данные находятся в текстовом файле с именем R5-3.IN и имеют следующий формат:

  • в первой строке находятся числа N (количество человек, £10) и M (количество возможных наборов, £100000);

  • в каждой из следующих M строк находятся 4 числа: F,B,C,S где F,B,C - количество бутылок фанты, штук бананов и тортов в наборе (0£F,B, C£1000), а S - стоимость набора (s£100000).

  • в последней строке находятся числа MF, MB и MC (MF, MB, MF£9).

Выходные данные должны находится в текстовом файле с именем R5-4.OUT и содержать число V - минимальный взнос участника.

Назад

витамины и минералы. тесты! Вы можете купить: поисковая оптимизация сайта на 20% дешевле! Важно!. Автомойка как источник дохода: перечень документов