Lab09 - Динамическое программирование.pptx
- Количество слайдов: 7
Методы программирования Курс лекций для специальности «Компьютерная безопасность»
Лабораторная работа 09. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
Перемножение матриц • Лимит времени 1000 мс. Лимит памяти 16000 Кб. • Задача. Дана цепочка матриц A 1, A 2, …, An. Нужно расставить в ней скобки так, чтобы минимизировать число элементарных операций умножения элементов, требуемое для перемножения всей цепочки. • Входные данные. В первой строке записано целое число 2 ≤ n ≤ 100 – количество матриц. В следующей строке через пробел записаны n+1 целых чисел p 0, p 1, …, pn, где 1 ≤ pi ≤ 1000, такие что pi-1 pi – размерность i-й матрицы. • Выходные данные. В единственной строке выведите минимальное количество скалярных умножений, требуемое для перемножения всей цепочки.
Общая подпоследовательность • Лимит времени 1000 мс. Лимит памяти 16000 Кб. • Задача. Даны две последовательности целых чисел X = x 1, …, xm и Y = y 1, y 2, …, yn. Требуется найти самую длинную общую подпоследовательность X и Y. • Входные данные. В первой строке записаны целые числа 1 ≤ m, n ≤ 1000 – длины последовательностей X и Y. В следующих двух строках через пробел записаны m целых чисел -109 ≤ xi ≤ 109 – элементы X – и n целых чисел -109 ≤ yi ≤ 109 – элементы Y. • Выходные данные. В первой строке запишите число k – длину максимальной общей подпоследовательности X и Y. Во вторую строку выведите k целых чисел, входящих в нее. Если таких подпоследовательностей несколько, выведите любую.
Возрастающая подпоследов-ть • Лимит времени 1000 мс. Лимит памяти 16000 Кб. • Задача. Дана последовательность целых чисел X = x 1, …, xn. Требуется найти самую длинную возрастающую подпоследовательность X. • Входные данные. В первой строке записано целое число 1 ≤ n ≤ 106 – длина последовательности X. В следующей строке через пробел записаны n целых чисел -109 ≤ xi ≤ 109 – элементы X. • Выходные данные. В первой строке запишите число k – длину наибольшей возрастающей подпоследовательности X. Во вторую строку выведите k целых чисел, входящих в нее. Если таких подпоследовательностей несколько, выведите любую.
Дискретная задача о рюкзаке • Лимит времени 1000 мс. Лимит памяти 16000 Кб. • Задача. Вор во время ограбления магазина обнаружил n предметов. Предмет под номером i имеет стоимость vi у. е. и вес wi кг. Вору нужно унести вещи, суммарная стоимость которых была бы как можно большей, однако грузоподъемность его рюкзака ограничивается W кг. • Входные данные. В первой строке записаны целые числа 1 ≤ n, W ≤ 1000 – количество предметов и грузоподъемность рюкзака. В следующих двух строках через пробел записаны n целых чисел 1 ≤ vi ≤ 106 – стоимость i-го предмета – и n целых чисел 1 ≤ wi ≤ 100 – вес i-го предмета. • Выходные данные. В первую строку выведите количество и максимальную стоимость унесенных предметов. Во вторую строку запишите номера унесенных предметов. Если возможных наборов несколько, выведите любой из них.
Непрерывная задача о рюкзаке • Лимит времени 1000 мс. Лимит памяти 16000 Кб. • Задача. Вор во время ограбления магазина обнаружил n шкатулок с драгоценными камнями. Камни под номером i имеют общую стоимость vi у. е. и весят wi кг. Вору нужно унести камни, суммарная стоимость которых была бы как можно большей, однако грузоподъемность его рюкзака ограничивается W кг. • Входные данные. В первой строке записаны целые числа 1 ≤ n ≤ 106 – количество шкатулок – и 1 ≤ W ≤ 1000 – грузоподъемность рюкзака. В следующих двух строках через пробел записаны n целых чисел 1 ≤ vi ≤ 106 – суммарная стоимость i-й разновидности камней – и n целых чисел 1 ≤ wi ≤ 100 – общий вес камней в i-й шкатулке. • Выходные данные. В единственной строке выведите максимальную стоимость унесенных камней с точностью до 3 знаков.
Lab09 - Динамическое программирование.pptx