下面的算法(伪代码)的时间复杂度是多少?我很难分析它。它是在另一个线程中指定的问题的实现:Algorithm to find max cost path of length N in matrix, from [0,0] to last row。但是因为我是新来的,所以我没有足够的积分在线程中发表评论(我认为)?这是我的第一篇文章,如果我做错了什么,请原谅。
该算法使用带有cache[][][][]
. 在初始化期间cache[][][][]
填充-1。
使用 调用该方法maxPath(0,0,m,DOWN)
。其中 m 是要采取的步数,n<=m<=n^2,方向定义为 DOWN=0, LEFT=1, RIGHT=2。
function maxPath(i, j, fuel, direction)
if i = n OR j = n OR j < 0 OR fuel = 0 then
return 0;
end if
if cache[i][j][f-1][d] != -1 then
return cache[i][j][f - 1][d];
end if
ret := 0
acc+ = matrix[i][j]
ret:=max(ret,maxPath(i+1, j, fuel-1, DOWN))
if f > n - i then . If there is enough steps to move horizontally
if d = RIGHT or d = DOWN then
ret:=max(ret,maxPath(i, j+1, fuel-1, RIGHT))
end if
if d = LEFT or d = DOWN then
ret:=max(ret,maxPath(i, j-1, fuel-1, LEFT))
end if
end if
return cache[i,j,fuel-1,direction] = ret + matrix[i][j]
end function