题目:
class Solution {
public:
int maxValue(vector<vector<int>>& grid) {
if(grid.empty()) return 0; //要考虑棋盘为空的情况直接返回0
vector<vector<int>> dp(grid.size(), vector(grid[0].size(), 0)); //定义一个和棋盘同样大小的dp数组,每个位置记录的是,走到该位置时礼物的最大价值。
dp[0][0] = grid[0][0]; //初始化第一格的最大礼物价值,即第一格的礼物价值
for(int i=1;i<grid.size();i++) dp[i][0]=dp[i-1][0]+grid[i][0]; //初始化只走第一列的最大价值
for(int j=1;j<grid[0].size();j++) dp[0][j]=dp[0][j-1]+grid[0][j]; //初始化只走第一行的最大价值
for(int i=1;i<grid.size();i++){ //因为前面做过的初始化工作,所以从第二行第二列开始遍历
for(int j=1;j<grid[0].size();j++){
dp[i][j]=max(dp[i-1][j], dp[i][j-1])+grid[i][j]; //每一个dp状态,要么是从上面来的,要么是从左边来的。这是为什么要初始化第一行和第一列的原因,因为他们没法从上面来或者从左边来
} //也就是说,如何初始化dp取决于遍历方向和递推方式
}
return dp[grid.size()-1][grid[0].size()-1]; //返回走到右下角时的最大礼物价值
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具