Гугли "динамическое программирование".
Тут конкретно: берем матрицу 4x5 такого вида: (20x20 многовато для иллюстрации)
1 1 1 1 1
1 . . . .
1 . . . .
1 . . . .
Точки здесь - это те значения, которые будем вычислять.
Единички - это число способов попасть в соответствующую клетку из верхней левой (её координаты 0,0).
В клетку 1,1 можно попасть из 0,1 и 1,0 - запишем туда сумму значений из 0,1 и 1,0:
1 1 1 1 1
1 2 . . .
1 . . . .
1 . . . .
И так далее.