在某些点上放置了一个带有苹果(仅限一个苹果)的矩阵。给出了源点和目的点。我们必须找到一个从源到目的地的路径,它具有最大数量的苹果。
解决问题的方法或算法应该是什么
答案 0 :(得分:0)
创建DP[i][j] finds maximum apples you can get from (0,0) to (i,j)
的二维数组
现在,假设您正向或向下行进,因此从(i,j)
开始,您可以移至(i+1,j)
或(i,j+1)
。
recurrence relation
:dp[i][j] = max(dp[i-1][j] , dp[i][j-1]) [for i,j = 1 to n-1]
。
您还需要在i=0
或j=0
时跟踪基本情况
最后dp[n-1][n-1]
给出了最大的苹果。
时间复杂度:O(n*n)
以及空间复杂度
但我们可以优化空间,因为我们只需查找当前行的前一行(i-1)
:i
。因此,空间可以降至O(n)
。
希望它可以帮到你!