MOST_WAY(n,m)//申请存结果和存路径的数组
let op[0,m+1][0,n+1]and ways be[0,m+1][0,n+1]new tables
//初始化数组for i =0 to m+1for j =0 to n+1
op[i,j]=0
ways[i][j]=0
curr_max_j =1//当前能到达的最大的列数
op[1][1]= v[1][1]//开始位置固定//递归求解for i =2 to m
for j =1 to curr_max_j
op[i][j]=0for k=-1 to 1if op[i][j]< op[i-1][j-k]+ v[i][j]
op[i][j]= op[i-1][j-k]+ v[i][j]
ways[i][j]= j-k
curr_max_j = curr_max_j +1
value =0, pos =0//记录最大值和最大值的列数for i =1 to m
if value < dp[m][i]
value = dp[m][i]
pos = i
let result_way[1,m] to be new table
result_way[1]=1//固定的
result_way[m]= pos //求最大值时求出的for i =0 to m-1
pos = ways[m-i][pos]
result_way[m-i-1]= pos
return value and result_way