Это стандартное упражнение на ДП.
F(i,j) - максимальное количество монет, которые можно собрать придя в точку (i, j).
F(0,0) = Z[0,0]
F(i,j) = Z[i,j] + max(F(i-1,j), F(i,j-1))
F(-1,*) = F(*,-1) = -100500
ответ - F(n,m)
Для восстановления пути сохраняйте в каждой ячейке, с какой стороны взят максимум - сверху или слева. И разворачивайте ответ с конца по этим ссылкам.