В материалах международного конкурса по информатике «Бобёр» есть такая задача, предложенная разработчиками из Нидерландов. Бобёр Билли любит жёлуди. Он хочет поплыть по течению и собрать все жёлуди на островах, мимо которых будет проплывать. Увы, течение реки настолько сильное, что он может плыть только вниз по течению. Какое максимальное количество желудей он сможет собрать? Решите эту задачу, воспользовавшись методом динамического программирования. На рисунке острова расположены последовательными рядами слева направо: 2; затем 0 и 5; затем 7, 1 и 0; затем 0, 5, 2 и 2; затем 2, 3, 0, 4 и 3 желудя. Каждый остров соединён протоками с ближайшими островами следующего ряда по рисунку.
Применим метод динамического программирования из §
Во втором ряду получаем сверху вниз:
В четвёртом ряду результаты сверху вниз равны:
Все протоки из пятого ряда ведут к выходу. Поэтому сравниваем окончательные результаты:
