这个题比较像数字三角形,遍历这个二维数组,每一位置所能取得的珠宝最大价值即位其左边和上边的最大值加上本身,最后输出末尾的价值即可。
小dp
class Solution {
public:
int jewelleryValue(vector<vector<int>>& frame) {
int f[300][300];
for(int i=1;i<=frame.size();i++)
for(int j=1;j<=frame[0].size();j++)
{
f[i][j]=max(f[i-1][j],f[i][j-1])+frame[i-1][j-1];
}
return f[frame.size()][frame[0].size()];
}
};