Алгоритм нахождения пути максимальной стоимости длины N в матрице от [0,0] до последней строки

у меня естьn*n матрица, где каждый элемент представляет целое число. Начиная в[0,0] Я должен найти путь точноm элементы до последней строки, возвращая максимальную стоимость. Путь может заканчиваться любым столбцом в последней строке иn ≤ m ≤ n^2

Я думал найти все пути длиныm от[0,0] в[n-1, 0], [n-1, 1] ... [n-1, n-1], Но это не чувствует себя оптимальным ...

Какой алгоритм будет наиболее эффективным способом сделать это? BFS или DFS?

EDIT

Возможные направления: вниз / вправо / влево, но посещать каждый элемент не более одного раза.

EDIT 2

Так, например, если эта матрица задана (n = 4):

[   1   4   1  20 ]
[   5   0   2   8 ]
[   6   8   3   8 ]
[   3   2   9   5 ]

И m = 7, путь может быть

[   →   →   →   ↓ ]
[   5   0   2   ↓ ]
[   6   8   3   ↓ ]
[   3   2   9   x ] = Path cost = 47

или же

[   ↓   4   1  20 ]
[   ↓   0   2   8 ]
[   →   →   ↓   8 ]
[   3   2   →   x ] = Path cost = 32 

или еслиm = n^2

[   →   →   →   ↓ ]
[   ↓   ←   ←   ← ]
[   →   →   →   ↓ ]
[   x   ←   ←   ← ]

EDIT 3 / SOLUTION

Благодаря Wanderley Guimar & es,
http://ideone.com/0iLS2

Ответы на вопрос(4)

Ваш ответ на вопрос