dp问题描述
确定本题的状态表示
dp[i][j]表示的是从左上角走到(i,j)这个位置所能获得的最大财富
确定本题的状态转移方程
由于这个题依然规定只能往右或者往下走,所以我们的求解思路就非常直接了
dp[i][j]=max(dp[i-1][j],dp[i][j-1])+frame[i-1][j-1];
填表求值
根据初始条件和状态转移方程,确定填表顺序,进而逐步填满dp表,最终返回题目要的结果
代码实现
这个题感觉好像也是比较直接,只是在前面的基础上引入了一个路径权值
class Solution {
public:
int jewelleryValue(vector<vector<int>>& frame) {
int m=frame.size();
if(m==0) return 0;
int n=frame[0].size();
vector<vector<int>> dp(m+1,vector<int>(n+1,0));
dp[1][1]=frame[0][0];
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
dp[i][j]=max(dp[i-1][j],dp[i][j-1])+frame[i-1][j-1];
}
}
return dp[m][n];
}
};
540

被折叠的 条评论
为什么被折叠?



