LeetCode 1024. 視訊拼接
阿新 • • 發佈:2020-10-25
劍指 Offer 47. 禮物的最大價值
解題思路
因為對於一個點,只可能是從上方或左方累加過來,那麼選擇值最大的那個方向累加即可。
轉移方程:
f[i][j]+=max(f[i-1][j],f[i][j-1]);
在原矩陣上操作,最後返回最右下角的數即可。
程式碼
class Solution { public: int maxValue(vector<vector<int> >& grid) { for(int i=0;i<grid.size();i++) { for(int j=0;j<grid[0].size();j++) { if(i==0&&j!=0) { if(grid[i][j-1]>0) { grid[i][j]+=grid[i][j-1]; } }else if(i!=0&&j==0) { if(grid[i-1][j]>0) { grid[i][j]+=grid[i-1][j]; } }else if(i!=0&&j!=0) { int max=grid[i-1][j]>grid[i][j-1]?grid[i-1][j]:grid[i][j-1]; if(max>0) { grid[i][j]+=max; } } } } return grid[grid.size()-1][grid[0].size()-1]; } };