Форум программистов, компьютерный форум CyberForum.ru

Вычислить наименьшую цену, которую покупатель должен заплатить за заданные покупки, и определить, какими скидками это можно сделать. - C++

Восстановить пароль Регистрация
 
vladius
1 / 1 / 0
Регистрация: 04.05.2012
Сообщений: 26
08.05.2012, 11:06     Вычислить наименьшую цену, которую покупатель должен заплатить за заданные покупки, и определить, какими скидками это можно сделать. #1
Здравствуйте, Я студент 1-ого курса, нужна помощь с написание кода к этой задаче на С++

Торговые скидки
(время на тест 1 секунда)

Условие

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

Необходимо вычислить наименьшую цену, которую покупатель должен заплатить за заданные покупки, и определить, какими скидками это можно сделать. Оптимальное решение должно быть получено посредством скидок. Набор товаров, который требуется купить, нельзя дополнять ничем, даже если бы это снизило общую стоимость набора. Для описанных выше цен и скидок наименьшая цена за три цветка и две вазы равна 14$: две вазы и один цветок продаются по сниженной цене за 10$ и два цветка — по обычной цене за 4$.

Входные данные задачи — целые числа, которые содержаться в двух файлах: input.txt и offer.txt.

Файл input.txt описывает покупки (“корзину с покупками”).

Первая строка файла содержит количество b (0 ≤ b ≤ 5) различных видов товара в корзине.

Каждая из следующих b строк содержит значения x, k и p:

x — уникальный код товара (1 ≤ x ≤ 999);
k — количество единиц товара c кодом x, которое должно находится в корзине (1 ≤ k ≤ 5);
p — стоимость единицы товара с кодом x (1 ≤ p ≤ 9999).
Обратите внимание, что общее количество товаров в корзине может быть не более 5 • 5 = 25 единиц.

Второй файл offer.txt описывает скидки. Первая строка файла содержит количество s возможных скидок (0 ≤ s ≤ 99). Каждая из следующих s строк описывает одну скидку, определяя набор товаров и общую стоимость набора. Первое число n в такой строке определяет количество различных видов товара в наборе (1 ≤ n ≤ 5). Следующие n пар чисел (x, k) указывают, что k единиц товара с кодом x включены в набор для скидки (1 ≤ k ≤ 5, 1 ≤ x ≤ 999). Последнее число p в строке определяет уцененную стоимость набора (1 ≤ p ≤ 9999). Стоимость набора меньше суммарной стоимости отдельных единиц товаров в наборе.

Выходной файл: output.txt должен иметь следующую структуру. Первая строка файла содержит наименьшую стоимость, за которую можно приобрести требуемое количество товаров в квадратных скобках.

Пример входных данных
Имеются товары:
input.txt
2
7 3 2
8 2 5
Пояснения:

3 единицы товара с кодом 7 по цене 2$ за единицу;
2 единицы товара с кодом 8 по цене 5$ за единицу.
Имеются скидки:
offer.txt
2
1 7 3 5
7 1 8 2 10
Пояснения:

набор из товара с кодом 7 состоит из 3 ед. этого товара и стоит 5$;
набор из двух товаров кодами 7 и 8 состоит из 1 ед. товара 7 и 2 ед. товара 8 и стоит 10$.
Пример выходных данных
[14]

Пояснения:
За столько можно купить 3 единицы товара 7 и 2 единицы товара 8.


Обязательно должны быть выпосленны все условия и написано int main{.....return0}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2012, 11:06     Вычислить наименьшую цену, которую покупатель должен заплатить за заданные покупки, и определить, какими скидками это можно сделать.
Посмотрите здесь:

C++ как можно сделать это? если вообще возможно (не задача)
Структуры: зачем мы выделяем память сами, когда это можно сделать автоматически? C++
Выяснить можно ли с поля (k,l) одним ходом ферьзя попасть на поле(m,n). Если нет, то выяснить, как это можно сделать за два хода C++
C++ нужно создать таблицу из 3 строк и 4 столбцов и заполнить её (любой информацией,это неважно) . Как это можно сделать ?
C++ Определить, какими пешками можно совершить ход, чтобы черный король не был под ударом ферзей
Покупатель должен заплатить в кассу 5 руб. У него имеются купюры по 1, 5, 10, 50, 100, 500, 1000 и 10000 руб C++
Можно ли сравнивать строковые литералы? как правильно это сделать? C++
Указать наименьшую длину числовой оси, содержащую заданные числа C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 05:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru