Сценарии в Linux; использование рекурсии; элементы динамического программирования
- Разбор Д/З
- Создание собственной программы
Исполняемые объекты (программы и сценарии):
Переменные в shell; PATH; .bash_profile: PATH=$PATH:$HOME/bin
ls -l, chmod +x
- shebang
- Рекурсия
- Вложенные пространства имён, потребление памяти
- ⇒ условия использования и неиспользования
- рекурсивные вызовы ⇔ общий код + стек состояний
- (если успеем) пример преобразования исходного кода
- Разбор задачи «Платная лестница-1/2»:
- неэффективное рекурсивное решение и его анализ
- решение методом динамического программирования
- (если успеем) в т. ч. «неправильное» рекурсивное
- Введение в динамическое программирование: определение подзадач и их зависимостей
Домашнее задание
Прочитать о динамическом программировании в Википедии
В частности, про числа Фибоначчи
Наступить на k-ю ступень лестницы A стоит Ak монет. Ввести через запятую «цены» ступеней A, и на следующей строке — ширину шага S (все числа натуральные) и вывести минимальную стоимость пути с земли до последней ступени (на которую наступать обязательно), при условии, что идти можно только вверх и перешагивать можно не более, чем через S-1 ступень.
5, 3, 6, 1, 1, 2, 3, 4, 7, 5, 5, 7, 1, 1, 4, 6, 3, 4, 7, 4, 2 4
14
(FibTail) Последние цифры большого числа Фибоначчи
Последовательность чисел Фибоначчи определяется следующим образом: F0 = F1 = 1, Fn+1 = Fn+Fn-1. Ввести N (возможно, довольно большое) и вывести последнюю цифру N-го числа Фибоначчи.
1234567
3
(ReqSum) Сумма подпоследовательности
Ввести число N, а на следующей строке — последовательность натуральных чисел через запятую. Проверить, является ли N суммой не более, чем 10 каких-либо элементов последовательности, и вывести YES или NO в зависимости от результата.
21 1,2,3,4,5,6,7,8,9,19,20,30,40
YES
Условные обозначения
— тема по Linux
— тема повышенной сложности
— теоретическое задание
— тема для самостоятельного изучения