0 / 0 / 1
Регистрация: 25.09.2012
Сообщений: 191
1

Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача?

12.09.2013, 05:55. Показов 1092. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У покупателя есть n монет достоинством H(1),..., H(n). У продавца есть m монет достоинством B(1),...,B(l). Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача (если она необходима).

Решение задачи.
Если S>H(1)+...+H(n), то сумму выплатить нельзя.
Если покупатель отдаст все свои купюры продавцу, то понятно, что для решения исходной задачи надо определить, может ли продавец вернуть сумму H(1)+...+H(n)+B(1)+...+B(l)-S, используя любые имеющиеся теперь у него купюры M[i] (его и покупателя). Для этого удобно отсортировать купюры согласно их достоинства в порядке неубывания.
Пусть P=M[1]+M[2]+ ... +M[n+l].
Решим чуть более общую задачу: найдем все непредставимые данными купюрами суммы на промежутке от 0 до P.
Заведем массив A[0 .. P] натуральных чисел. Элемент A[i]=1, если мы можем выплатить сумму i (т.е. существует набор купюр суммарного достоинства i), и A[i]=0 иначе.
Будем строить всевозможные суммы, используя последовательно 0,1,2,...,N купюр.
Очевидно, что сумма из ноля купюр - это ноль, поэтому сначала A[0]=1.
Предположим, что мы нашли всевозможные суммы, которые можно составить, используя не более (k-1) - ой купюры M[1], ..., M[K-1]. Добавим еще одну купюру M[k].
Теперь мы можем выплатить следующие суммы:
1) Все суммы, которые можно было составить с помощью купюр M[1], ... , M[K-1].
2) Все суммы, которые можно было составить с помощью купюр M[1], ... , M[K-1], увеличенные на M[K].
Расстановка новых пометок в массиве A может выглядеть следующим образом:
for i:=P-M[K] downto 0 do
if A[i]=1
then A[i+M[K]]:=1;
Мы проходим по массиву справа налево для того, чтобы не использовать повторно впервые образованную на данном шаге сумму.
После выполнения n+l шагов алгоритм заканчивает работу.
Если известно, что H(1)+...+H(n)+B(1)+...+B(l)-S не превосходит некоторой константы D, то тогда массив A имеет смысл брать не из P, а из D элементов.

Написать алгоритм данной задачи.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.09.2013, 05:55
Ответы с готовыми решениями:

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

Сколько товаров может купить покупатель
Помогите, пожалуйста, решить простые задачки. 2) Известна сумма денег S, имеющуюся у покупателя...

Может ли купить покупатель вещь стоимости S так, чтобы у продавца нашлась точная сдача
У покупателя есть n монет достоинством H(1),...,H(n). У продавца есть m монета достоинством...

Сколько единиц товара покупатель может купить и какова сдача
Помогите пожалуйста решить, очень нужно. Дана сумма денег, имеющаяся у покупателя и стоимость...

1
696 / 570 / 414
Регистрация: 31.03.2013
Сообщений: 1,029
12.09.2013, 08:13 2
Vad1k, У покупателя есть n монет достоинством H(1),..., H(n). У продавца есть m монет достоинством B(1),...,B(m)
0
12.09.2013, 08:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.09.2013, 08:13
Помогаю со студенческими работами здесь

Сколько единиц товара сможет купить покупатель и какова его сдача?
Известна сумма денег, что есть у покупателя и стоимость одной единицы товара. Сколько единиц товара...

Сколько единиц товара сможет купить покупатель и какова его сдача?
1. Известна сумма денег, имеющаяся у покупателя и стоимость одной единицы товара. Сколько единиц...

Найти максимальную стоимость товара Р, которую покупатель не может купить
Покупатель имеет купюры достоинством A(1), ...,A(n), а продавец - B(1), .. ,B(m). Необходимо найти...

Купить K наименований книг так, чтобы заявка была удовлетворена по количеству приобретаемых разных книг
Помогите решить? Вечером выложу наработки. 2.3.10. В библиотечном коллекторе имеется N...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru