Динамическое программирование на таблицах(46 задач)
Динамическое программирование по подстрокам(21 задач)
Задача о рюкзаке(34 задач)
Для данных натуральных чисел n и k определите количество способов представить число n в виде суммы k натуральных слагаемых, если способы, отличающиеся только порядком слагаемых считать одинаковыми.
Программа получает на вход два натуральных числа n и k, не превосходящих 150. Гарантируется, что ответ не превосходит 231-1.
Выведите ответ на задачу.
Эту задачу разрешается (и рекомендуется) решать, при помощи Memorization.
6 3
3
По данному натуральному n определите количество правильных скобочных последовательностей, составленных из n открывающихся и n закрывающихся круглых скобок.
Программа получает на вход натуральное число n, не превосходящее 1000.
Необходимо вывести остаток от деления числа искомых последовательностей на 109+7.
3
5
По данным числам n и k определите количество правильных скобочных последовательностей длины 2n, составленных из круглых скобок, максимальная вложенность скобок в которой составляет в точности k.
Программа получает на вход два натуральных числа n и k (1≤k≤n≤50).
Необходимо вывести остаток от деления числа искомых последовательностей на 109+7.
3 1
1
3 2
3
3 3
1
Даны N золотых слитков известных масс. Определите, какую наибольшую массу золота можно унести, если вместимость рюкзака не превышает S.
Программа получает на вход целое число S — вместимость рюкзака, не превосходящее 10000 и количество слитков N, не превосходящее 300. Далее следует N целых неотрицательных чисел, не превосходящих 100000 — веса слитков.
Программа должна вывести единственное целое число — максимально возможных вес золота, который поместится в данный рюкзак.
10 3 5 7 4
9
Дано N предметов массой m1, …, mN и стоимостью c1, …, cN соответственно.
Ими наполняют рюкзак, который выдерживает вес не более M. Какую наибольшую стоимость могут иметь предметы в рюкзаке?
Формат входных данных
В первой строке вводится натуральное число N, не превышающее 100 и натуральное число M, не превышающее 10000.
Во второй строке вводятся N натуральных чисел mi, не превышающих 100.
Во третьей строке вводятся N натуральных чисел сi, не превышающих 100.
Выведите одно целое число: наибольшую возможную стоимость рюкзака.
4 6 2 4 1 2 7 2 5 1
13