Я вообще не получил ваш подход.
Это проблема простого динамического программирования.
Рассмотрим это как двумерный массив Arr [4] [4]
[{ 0, 0, 0, 6 },
{ 2, 0, 0, 2 },
{ 0, 1, 1, 1 },
{ 3, 0, 0, 0 }]
Создайте еще один массив dp из 4 * 4
Первое, что вам нужно, это инициализировать базовые случаи.
Итак, первый столбец и последняя строка - это наш базовый случай.
dp[0][3]=Arr[0][3];
После этого для первого столбца
dp[i][0]=dp[i+1][0]+Arr[i][0];
Для последнего ряда
dp[3][i]=dp[3][i-1]+Arr[3][i];
Для других значений
dp[i][j]=max(dp[i][j-1],dp[i+1][j])+Arr[i][j];
Мы выберем максимальное значение.
Наш массив dp будет выглядеть так, где ответ будет 14
[{ 5, 5, 5, 14 },
{ 5, 5, 5, 8 },
{ 3, 4, 5, 6 },
{ 3, 3, 3, 3 }]