Динамическое программирование

Треугольник

Задача:

Дан триугольник, нужно найти минимальную сумму пути от верхнего елемента до нижнего. Каждый шаг можна осуществлять только на соседние значения, которые лежат в нижнем ряду триугольника.