Как автомат с едой рассчитывает сдачу

Содержание

Слайд 2

ЗАДАНИЕ 3 (обяз. минимум)

В некотором государстве в обращении находятся банкноты определенных номиналов.

ЗАДАНИЕ 3 (обяз. минимум) В некотором государстве в обращении находятся банкноты определенных
Национальный банк хочет, чтобы банкомат выдавал любую запрошенную сумму при помощи минимального числа банкнот, считая, что запас банкнот каждого номинала неограничен. Помогите Национальному банку решить эту задачу.
Входные данные
Первая строка входных данных содержит натуральное число N не превосходящее 100 — количество номиналов банкнот в обращении. Вторая строка входных данных содержит N различных натуральных чисел x1, x2, ..., xN, не превосходящих 106 — номиналы банкнот. Третья строчка содержит натуральное число S, не превосходящее 106 —сумму, которую необходимо выдать.
Выходные данные
Программа должна количество банкнот в разложении. Если такое представление не существует, то программа должна вывести строку «No solution».

Слайд 3

№3087 – ЧАСТЬ 1

Решение

№3087 – ЧАСТЬ 1 Решение

Слайд 4

Задание 3

Пример:
n = 5 (количество купюр)
X = {32, 12, 7, 3, 1,

Задание 3 Пример: n = 5 (количество купюр) X = {32, 12,
5}
s = 40

Слайд 5

Задание 3

Пример:
n = 5 (количество купюр)
X = {32, 12, 7, 3, 1,

Задание 3 Пример: n = 5 (количество купюр) X = {32, 12,
5}
s = 40
Ваш ответ?

Слайд 6

Задание 3

Пример:
n = 5 (количество купюр)
X = {32, 12, 7, 3, 1,

Задание 3 Пример: n = 5 (количество купюр) X = {32, 12,
5}
s = 40
Ответ: 3, т.к. 40 = 3 + 5 + 32

Слайд 7

Задание 3

Заведём массив Ans размера s (динамически).
Ans[i] - количество банкнот, необходимых для

Задание 3 Заведём массив Ans размера s (динамически). Ans[i] - количество банкнот,
выдачи суммы i.

Слайд 8

Задание 3

Заведём массив Ans размера s (динамически).
Ans[i] - количество банкнот, необходимых для

Задание 3 Заведём массив Ans размера s (динамически). Ans[i] - количество банкнот,
выдачи суммы i.

Пример:
n = 5 (количество купюр)
X = {32, 12, 7, 3, 1, 5}
s = 40
Ans[1] = ?

Слайд 9

Задание 3

Заведём массив Ans размера s (динамически).
Ans[i] - количество банкнот, необходимых для

Задание 3 Заведём массив Ans размера s (динамически). Ans[i] - количество банкнот,
выдачи суммы i.

Пример:
n = 5 (количество купюр)
X = {32, 12, 7, 3, 1, 5}
s = 40
Ans[1] = 1

Слайд 10

Задание 3

Заведём массив Ans размера s (динамически).
Ans[i] - количество банкнот, необходимых для

Задание 3 Заведём массив Ans размера s (динамически). Ans[i] - количество банкнот,
выдачи суммы i.

Пример:
n = 5 (количество купюр)
X = {32, 12, 7, 3, 1, 5}
s = 40
Ans[1] = 1
Ans[9] = ?

Слайд 11

Задание 3

Заведём массив Ans размера s (динамически).
Ans[i] - количество банкнот, необходимых для

Задание 3 Заведём массив Ans размера s (динамически). Ans[i] - количество банкнот,
выдачи суммы i.

Пример:
n = 5 (количество купюр)
X = {32, 12, 7, 3, 1, 5}
s = 40
Ans[1] = 1
Ans[9] = 3

Слайд 12

Задание 3

Заведём массив Ans размера s (динамически).
Ans[i] - количество банкнот, необходимых для

Задание 3 Заведём массив Ans размера s (динамически). Ans[i] - количество банкнот,
выдачи суммы i.

Пример:
n = 5 (количество купюр)
X = {32, 12, 7, 3, 1, 5}
s = 40
Где будет находиться ответ?

Слайд 13

Задание 3

Заведём массив Ans размера s (динамически).
Ans[i] - количество банкнот, необходимых для

Задание 3 Заведём массив Ans размера s (динамически). Ans[i] - количество банкнот,
выдачи суммы i.

Пример:
n = 5 (количество купюр)
X = {32, 12, 7, 3, 1, 5}
s = 40
Где будет находиться ответ?
- В Ans[40]

Слайд 14

Задание 3

Пример:
X = {32, 12, 7, 3, 1, 5}
Будем заполнять Ans последовательно…

Задание 3 Пример: X = {32, 12, 7, 3, 1, 5} Будем заполнять Ans последовательно…

Слайд 15

Задание 3

Пример:
X = {32, 12, 7, 3, 1, 5}
Допустим мы уже заполнили

Задание 3 Пример: X = {32, 12, 7, 3, 1, 5} Допустим
5 ячеек.

Слайд 16

Задание 3

Пример:
X = {32, 12, 7, 3, 1, 5}
Допустим мы уже заполнили

Задание 3 Пример: X = {32, 12, 7, 3, 1, 5} Допустим
5 ячеек.

Слайд 17

Задание 3

Пример:
X = {32, 12, 7, 3, 1, 5}
Заполним 6-ую. Пока напишем

Задание 3 Пример: X = {32, 12, 7, 3, 1, 5} Заполним
туда какое-нибудь большое число (мы же минимум ищем)

Слайд 18

Задание 3

Пример:
X = {32, 12, 7, 3, 1, 5}
Заполним 6-ую. Если в

Задание 3 Пример: X = {32, 12, 7, 3, 1, 5} Заполним
конце оно там так и останется, значит, разменять эту сумму нельзя.

Слайд 19

Задание 3

Пример:
X = {32, 12, 7, 3, 1, 5}
Заполним 6-ую. 41 –

Задание 3 Пример: X = {32, 12, 7, 3, 1, 5} Заполним
достаточно большое число (точно не встретится потом)

Слайд 20

Задание 3

Пример:
X = {32, 12, 7, 3, 1, 5}
Купюру 32 мы не

Задание 3 Пример: X = {32, 12, 7, 3, 1, 5} Купюру
можем использовать

Слайд 21

Задание 3

Пример:
X = {32, 12, 7, 3, 1, 5}
Купюру 12 мы не

Задание 3 Пример: X = {32, 12, 7, 3, 1, 5} Купюру
можем использовать

Слайд 22

Задание 3

Пример:
X = {32, 12, 7, 3, 1, 5}
Купюру 7 мы не

Задание 3 Пример: X = {32, 12, 7, 3, 1, 5} Купюру
можем использовать

Слайд 23

Задание 3

Пример:
X = {32, 12, 7, 3, 1, 5}
Если мы используем купюру

Задание 3 Пример: X = {32, 12, 7, 3, 1, 5} Если
3, то останется разменять 6 – 3 = 3 рубля. В массиве Ans уже записано, сколько потребуется купюр для этого

Слайд 24

Задание 3

Пример:
X = {32, 12, 7, 3, 1, 5}
Если мы используем купюру

Задание 3 Пример: X = {32, 12, 7, 3, 1, 5} Если
3, то останется разменять 6 – 3 = 3 рубля. В массиве Ans уже записано, сколько потребуется купюр для этого

Слайд 25

Задание 3

Пример:
X = {32, 12, 7, 3, 1, 5}
Если мы используем купюру

Задание 3 Пример: X = {32, 12, 7, 3, 1, 5} Если
3, то останется разменять 6 – 3 = 3 рубля. В массиве Ans уже записано, сколько потребуется купюр для этого. Итого 6 = 3 + 3, т.е. потребуется 2 купюры. Это лучше, чем было.

Слайд 26

Задание 3

Пример:
X = {32, 12, 7, 3, 1, 5}
Если вместо этого мы

Задание 3 Пример: X = {32, 12, 7, 3, 1, 5} Если
используем купюру 1, то останется разменять 6 – 1 = 5 рублей.

Слайд 27

Задание 3

Пример:
X = {32, 12, 7, 3, 1, 5}
Если вместо этого мы

Задание 3 Пример: X = {32, 12, 7, 3, 1, 5} Если
используем купюру 1, то останется разменять 6 – 1 = 5 рублей. В табличке записано, сколько купюр для этого потрбуется

Слайд 28

Задание 3

Пример:
X = {32, 12, 7, 3, 1, 5}
Итого, 6 = 1

Задание 3 Пример: X = {32, 12, 7, 3, 1, 5} Итого,
+ 5, т.е. потребуется 2 купюры. Такой результат уже был, ничего менять не будем.

Слайд 29

Задание 3

Пример:
X = {32, 12, 7, 3, 1, 5}
Если мы используем 5

Задание 3 Пример: X = {32, 12, 7, 3, 1, 5} Если
рублей, то остается 6 – 5 = 1. Итого 1 + 1 = 2 купюры. Ничего не меняем.

Слайд 30

Задание 3

Пример:
X = {32, 12, 7, 3, 1, 5}
Итого Ans[6] = 2

Задание 3 Пример: X = {32, 12, 7, 3, 1, 5} Итого Ans[6] = 2

Слайд 31

Подсказки

Алгоритм:
Вычислить последовательно ответ для всех возможны сумм от 1 до s:
Для каждой

Подсказки Алгоритм: Вычислить последовательно ответ для всех возможны сумм от 1 до
суммы перебрать все купюры:
Если купюра может участвовать в размене:
Посчитать, сколько купюр понадобится с её использованием (см предыдущие результаты)
Если это лучше, тем текущий результат, изменить текущий результат.

Слайд 32

Следующее задание
Задание 4. Программа должна найти представление числа S виде суммы слагаемых

Следующее задание Задание 4. Программа должна найти представление числа S виде суммы
из множества xi, содержащее минимальное число слагаемых и вывести это представление на экран (в виде последовательности чисел, разделенных пробелами). Если таких представлений существует несколько, то программа должна вывести любое (одно) из них. Если такое представление не существует, то программа должна вывести строку “No solution”.
(№ 3087 на http://informatics.mccme.ru)

Слайд 33

РЕШЕНИЕ

Заведем дополнительный массив Parent
Помимо лучшего результата (количества купюр) будем хранить какую купюру

РЕШЕНИЕ Заведем дополнительный массив Parent Помимо лучшего результата (количества купюр) будем хранить
мы взяли, чтобы этот результат получить.

Ans

Parent

Слайд 34

РЕШЕНИЕ

Заведем дополнительный массив Parent
Помимо лучшего результата (количества купюр) будем хранить какую купюру

РЕШЕНИЕ Заведем дополнительный массив Parent Помимо лучшего результата (количества купюр) будем хранить
мы взяли, чтобы этот результат получить.

Ans

Parent

Слайд 35

РЕШЕНИЕ

После вычисления, будем выводить по очереди купюры.
Начнем с 6. Видим, что нам

РЕШЕНИЕ После вычисления, будем выводить по очереди купюры. Начнем с 6. Видим,
нужна купюра 3. Выводим ее на экран.

Ans

Parent

Слайд 36

РЕШЕНИЕ

После вычисления, будем выводить по очереди купюры.
Начнем с 6. Видим, что нам

РЕШЕНИЕ После вычисления, будем выводить по очереди купюры. Начнем с 6. Видим,
нужна купюра 3. Выводим ее на экран.

Ans

Parent

Вывод: 3

Слайд 37

РЕШЕНИЕ

После вычисления, будем выводить по очереди купюры.
Сдвинемся на 6 – 3= 3

РЕШЕНИЕ После вычисления, будем выводить по очереди купюры. Сдвинемся на 6 –
и выведем, соответственно, 3

Ans

Parent

Вывод: 3 3

Имя файла: Как-автомат-с-едой-рассчитывает-сдачу.pptx
Количество просмотров: 22
Количество скачиваний: 0