kavlab / deep_python

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Практика №3. Динамическое программирование

Задача 1

Дано N предметов массой m1, …, mN и стоимостью c1, …, cN соответственно.

Ими наполняют рюкзак, который выдерживает вес не более M. Какую наибольшую стоимость могут иметь предметы в рюкзаке?

Входные данные:

В первой строке вводится натуральное число N, не превышающее 100, и натуральное число M, не превышающее 10000.

Во второй строке вводится N натуральных чисел mi, не превышающих 100.

Во третьей строке вводится N натуральных чисел сi, не превышающих 100.

Выходные данные:

Выведите одно целое число: наибольшую возможную стоимость рюкзака.

Решение в файле task1.py

Задача 2

Дан набор гирь массой m1, …, mN. Можно ли их разложить на две чаши весов, чтобы они оказались в равновесии?

Входные данные:

В первой строке вводится натуральное число N, не превышающее 100.

Во второе строке вводится N натуральных чисел mi, не превышающих 100.

Выходные данные:

Выведите True или False.

Решение в файле task2.py

Задача 3

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

Входные данные:

Первая строка входных данных содержит натуральное число N, не превосходящее 100 — количество номиналов банкнот в обращении. Вторая строка входных данных содержит N различных натуральных чисел x1, x2, ..., xN, не превосходящих 106 — номиналы банкнот. Третья строчка содержит натуральное число S, не превосходящее 106 — сумму, которую необходимо выдать.

Выходные данные:

Программа должна определить представление числа S как сумму элементов из множества xi таким образом, чтобы количество элементов в сумме было минимальным. Затем она должна отобразить это представление, выведя на экран последовательность элементов, разделенных пробелами. В случае наличия нескольких подходящих представлений, программа может вывести любое из них. Если же найти такое представление невозможно, программа должна сообщить об этом, выведя сообщение «No solution».

Решение в файле task3.py

Задача 4

Дано N предметов массой m1, …, mN. Ими наполняют рюкзак, который выдерживает вес не более M. Как набрать вес в точности M, используя как можно меньше предметов?

Входные данные:

Первая строка входных данных содержит натуральное число N, не превышающее 100, и натуральное число M, не превышающее 10000.

Во второй строке находится N натуральных чисел mi, не превышающих 100.

Выходные данные:

Выведите наименьшее необходимое число предметов или 0, если набрать данный вес невозможно.

Решение в файле task4.py

Задача 5

Дана прямоугольная доска N × M (N строк и M столбцов). В левом верхнем углу находится шахматный конь, которого необходимо переместить в правый нижний угол доски. При этом конь может ходить только на две клетки вниз и на одну клетку вправо, либо на две клетки вправо и на одну клетку вниз (рисунок для случая 3х3).

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

Входные данные:

В первой строке входного файла находится два натуральных числа N и M (1 ≤ N, M ≤ 50).

Выходные данные:

Вывести единственное число — количество способов добраться конем до правого нижнего угла доски.

Решение в файле task5.py

About


Languages

Language:Python 100.0%