- •Лабораторная №3 Динамическое программирование
- •Взрывоопасность
- •C. Палиндромы
- •Индивидуальные задания
- •1. Вычеркивание цифр
- •2. Задача о рюкзаке
- •3. Очередь
- •4. Восстановление скобок
- •5. Космический мусорщик
- •7. Покупка билетов
- •11. Две стены
- •13. Роботы
- •14. День рождения Иванова
- •16. Копилка
- •17. Возрастающая последовательность
- •18. Взрывоопасность
- •19. Максимальны квадрат
- •22. Лесопилка
18. Взрывоопасность
На одном из секретных заводов осуществляется обработка радиоактивных материалов, в результате которой образуются радиоактивные отходы двух типов: типа А (особо опасные) и типа Б (неопасные). Все отходы упаковываются в специальные прямоугольные контейнеры одинаковых размеров, после чего эти контейнеры укладываются в стопку один над другим для сохранения. Стопка является взрывоопасной, если в ней соседствуют два ящика с отходами типа А.
Требуется написать программу, которая подсчитывает количество возможных вариантов формирования невзрывоопасной стопки из заданного общего числа контейнеров N.
Входные данные: Во входном файле содержится единственное число N (1£N£100).
Выходные данные: В выходной файл необходимо вывести искомое число вариантов.
-
input.txt
output.txt
4
8
19. Максимальны квадрат
Дана квадратная матрица N*N состоящий из нулей и единиц. Найти максимальный квадрат состоящий только из единиц.
Формат входных данных
Во входном файле в первой строке записано число N — размер матрицы (1≤N≤1000). Со второй строки заданы элементы матрицы.
Формат выходных данных
В первой строке выходного файла выведите одно число — размер найденного квадрата, во второй координаты левого верхнего угла найденного квадрата. Если их несколько, напечатать любую из них
Пример
-
input.txt
output.txt
6
1 0 0 1 0 1
1 1 0 1 1 1
0 0 0 1 0 1
0 1 0 1 1 1
1 1 0 0 0 1
1 1 1 1 1 0
2
5 1
20. Головоломка умножения. В головоломку умножения играют с рядом карт, каждая из которых содержит одно положительное целое число. Во время хода игрок убирает одну карту из ряда и получает число очков, равное произведению числа на убранной карте и чисел на картах, лежащих непосредственно слева и справа от неё. Не разрешено убирать первую и последнюю карты ряда. После последнего хода в ряду остаётся только две карты. Цель игры - убрать карты в таком порядке, чтобы минимизировать общее количество набранных очков. Например, если карты содержат числа 10, 1, 50, 20 и 5, игрок может взять карту с числом 1, затем 20 и 50, получая очки 10 * 1 * 50 + 50 * 20 * 5 + 10 * 50 * 5 = 500 + 5000 + 2500 = 8000. Если бы он взял карты в обратном порядке, то есть 50, затем 20, затем 1, количество очков было бы таким: 1 * 50 * 20 + 1 * 20 * 5 + 10 * 1 * 5 = 1000 + 100 + 50 = 1150. Ввод из файла input.txt. В первой строке находится число карт N, во второй - разделённые пробелами N чисел на картах. Ограничения: 3 <= N <= 100, числа на картах целые от 1 до 100, время 1 с. Вывод в файл output.txt. Вывести одно целое число - минимально возможное число очков. Примеры
Input.txt |
Output.txt |
6 10 1 50 50 20 5 |
3650
|
21. Длинный палиндром. Требуется найти самый длинный палиндром P, получающийся из данной строки S удалением некоторого (какого потребуется, возможно, нулевого) количества символов. Длина S не превышает 1000.
Формат входных данных
В первой строке входного файла задана строка S.
Формат выходных данных
Вывести в первой строке длину самого длинного палиндрома P, получающегося из данной строки S, а во второй строке полученный палиндром. Если их несколько, то любой из них.
Пример
input.txt |
output.txt |
sabhdbad |
5 abhba |
