题解 | #礼物的最大价值#

礼物的最大价值

https://www.nowcoder.com/practice/2237b401eb9347d282310fc1c3adb134

礼物的最大价值:最直观的想法是,使用二维数组dp[i][j]表示第i行第j列所能拿的礼物的最大价值,首先初始化第一行和第一列,其是当前行(列)前一个最大价值与当前元素之和,接着从左向右从上向下遍历,其中dp[i][j]=max(dp[i-1][j],dp[i][j-1])+grid[i][j],最后返回dp[m-1][n-1]即可。

int maxValue(vector<vector<int> >& grid) 
{
   //m表示长 n表示宽
   int m=grid.size(),n=grid[0].size();
   //dp[i][j]表示第i行第j列的所能拿的礼物的最大价值
   vector<vector<int>> dp(m,vector<int>(n,0));
   //初始化第一个
   dp[0][0]=grid[0][0];
   //初始化第一行
   for(int i=1;i<n;i++)
      dp[0][i]+=(dp[0][i-1]+grid[0][i]);
   //初始化第一列
   for(int i=1;i<m;i++)
      dp[i][0]+=(dp[i-1][0]+grid[i][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])+grid[i][j];
   return dp[m-1][n-1];
}

#礼物的最大价值#
剑指offer 文章被收录于专栏

剑指offer专栏主要分享剑指offer题解。

全部评论

相关推荐

05-18 12:59
已编辑
东南大学 人工智能
夜晚的精灵:熟悉transformer架构,熟悉机器学习,强化学习这些都可以写上去
点赞 评论 收藏
分享
代码飞升AL:同学院本 你这都是无效实习和跳槽 下一段底线是去一个稍微知名的公司 本质是骑驴找马 你这一直骑驴换来换去没什么区别
双非有机会进大厂吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务