1060- 礼物的最大价值

2023-10-31

题目如下

在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?

示例 1:

输入:
[
[1,3,1],
[1,5,1],
[4,2,1]
]
输出: 12
解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物

解题方法1

在这里插入图片描述

class Solution 
{
public:
    int maxValue(vector<vector<int>>& grid) 
    {
        int m = grid.size(), n = grid[0].size();
        vector< vector<int> > dp(m, vector<int>(n));
        for (int i = 0; i < m; ++i)
        {
            for (int j = 0; j < n; ++j) 
            {
                if (i == 0 && j == 0)
                {
                    dp[i][j] = grid[i][j];
                }
                else if (i == 0)
                {
                    dp[i][j] = dp[i][j - 1] + grid[i][j];
                }
                else if (j == 0)
                {
                    dp[i][j] = dp[i - 1][j] + grid[i][j];
                }
                else
                {
                    dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];
                }
            }
        }
        return dp[m - 1][n - 1];
    }
};

解题方法2

在这里插入图片描述

class Solution 
{
public:
    int maxValue(vector<vector<int>>& grid) 
    {
        int m = grid.size(), n = grid[0].size();
        vector<int> dp(n);
        for (int i = 0; i < m; ++i)
        {
            for (int j = 0; j < n; ++j) 
            {
                if (i == 0 && j == 0)
                {
                    dp[j] = grid[i][j];
                }
                else if (i == 0)
                {
                    dp[j] = dp[j - 1] + grid[i][j];
                }
                else if (j == 0)
                {
                    dp[j] += grid[i][j];
                }
                else
                {
                    dp[j] = max(dp[j - 1], dp[j]) + grid[i][j];
                }
            }
        }
        return dp[n - 1];
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1060- 礼物的最大价值 的相关文章

随机推荐

  • 【TestNG】TestNG使用教程详解

    一 TestNG介绍 TestNG是Java中的一个测试框架 类似于JUnit 和NUnit 功能都差不多 只是功能更加强大 使用也更方便 详细使用说明请参考官方链接 https testng org doc index html 二 Te
  • anaconda 创建虚拟环境、激活及使用的基本方法

    1 查看当前存在的虚拟环境 conda env list 2 创建虚拟环境 环境名 conda create n 环境名 python X X 3 激活指定虚拟环境 activate 环境名 4 删除虚拟环境 conda remove n
  • c++ 鼠标控制

    windows下获得鼠标位置和控制鼠标 include
  • 使用nodejs开发一个markdown文档管理小系统(一)Using Nodejs to quickly develop a markdown management system...

    好多年没碰过前端jquery了 用一两天时间重温一下 刚好写个小工具 不递归取文件夹和文件 只写一层 保持足够简单 验证和参数判断暂不写 毕竟只写了几个小时而已 功能算完备了 添加一个简单的管理员权限管理修改的所有功能即可放出去了 看来还不
  • LaTeX各种算法排版

    1 首先在导言区加入语句 usepackage algorithm usepackage algorithmic 2 例1 begin algorithm caption A label alg A begin algorithmic ST
  • AUTOSEMO“恒以致远,共创共赢”主题研讨会圆满落幕

    2023年8月31日 中国汽车工业协会软件分会中国汽车基础软件生态标委会 简称 AUTOSEMO 与天津市西青区人民政府联合主办 北京经纬恒润科技股份有限公司承办的 恒以致远 共创共赢 主题研讨会在天津隆重召开 本次研讨会是AUTOSEMO
  • vue2.0使用less 创建全局的颜色变量,配置主题色

    1 使用场景 项目中需要统一配置前端的主题样式 我们可以使用less创建 theme colors rgba 54 174 149 1 变量 供全局调用 2 安装依赖 cnpm install less less loader save 安
  • 【Android】WebView控件最全使用解析

    WebView控件最全使用解析 一 WebView 概述 二 WebView使用基础篇 2 1添加方式 2 2 加载远程网页 2 3 加载本地网页 2 4 加载HTML片段 2 5 WebView 常用方法 三 WebView 进阶篇 3
  • Android--Recovery模块之恢复出厂设置

    一 在进行详细流程分析之前 先看一下几个重要概念 一 Recovery的工作需要整个软件平台的配合 从架构角度看 有三个部分 1 Main system 用boot img启动的Linux系统 Android的正常工作模式 2 Recove
  • 【MyBatis】自定义resultMap三种映射关系

    目录 一 一对一映射 One to One 1 1 表关系 1 2 resultMap设置自定义映射 二 一对多映射 One to Many 2 1 创建实体 2 2 级联方式处理映射关系 2 3 定义SQL 2 4 OrderMapper
  • jquery 购物车飞入特效--全网最简单

    有个插件 jquery fly js 可以搞定 好象特点之一是有抛物线效果 如果要求不高 可以看看我这个 其实也是在网上看到的 作了些改进 三个元素 被点击的div 飞翔的小红点 装小红点的div 购物车 div 被点击的 div div
  • (一)@Input属性讨论

    Input Declares a data bound input property Angular automatically updates data bound properties during change detection 大
  • PAT C入门题目-7-111 输出学生成绩 (20 分)(动态内存分配)

    7 111 输出学生成绩 20 分 本题要求编写程序 根据输入学生的成绩 统计并输出学生的平均成绩 最高成绩和最低成绩 建议使用动态内存分配来实现 输入格式 输入第一行首先给出一个正整数N 表示学生的个数 接下来一行给出N个学生的成绩 数字
  • vue3+uniapp+TS+Vite+uView-plus(uniapp-nutui)微信小程序模板搭建

    官网下载目录结构 DCloud uni preset vue 码云 开源中国 gitee com 下载zip压缩包即可 目录 一 依赖下载 二 运行 三 vite config json文件修改 四 uView plus组件库加载 1 安装
  • Android Studio之BuildConfig类

    转自 http blog csdn net lvxiangan article details 71601451 Android Studio开发中 把一个module输出打包为jar文件 我们会发现里面多了一个BuildConfig类 但
  • vue中慎用style的scoped属性

    在vue组件中 在style标签上添加scoped属性 以表示它的样式作用于当下的模块 很好的实现了样式私有化的目的 这是一个非常好的机制 但是为什么要慎用呢 在实际业务中我们往往会对公共组件样式做细微的调整 如果添加了scoped属性 那
  • 前后端通过局域网对接

    因为前后端分离写项目 后端同学在隔壁宿舍 我们通过连他的热点来进行前后端的对接 第一步 关闭防火墙 第二部 找到自己ip地址 无线局域网Ipv4地址 然后前后端在 cmd中 通过 ping 加上地址可以连接成功 然后就可以访问后端的接口了
  • Linux与Windows:操作系统之争及个人体验比较

    在当今数码化的世界中 操作系统扮演着关键的角色 Linux和Windows作为最受欢迎和广泛使用的操作系统之一 具有不同的特点和优势 作为一个AI模型 我虽然没有真正的使用经验 但我可以就这两个操作系统进行比较 并提供一些观点供您参考 Li
  • 利用注册表修改3389端口

    步骤 打开 开始 运行 输入 regedit 打开注册表 进入以下路径 HKEY LOCAL MACHINE SYSTEM CurrentControlSet Control Terminal Server Wds rdpwd Tds tc
  • 1060- 礼物的最大价值

    题目如下 在一个 m n 的棋盘的每一格都放有一个礼物 每个礼物都有一定的价值 价值大于 0 你可以从棋盘的左上角开始拿格子里的礼物 并每次向右或者向下移动一格 直到到达棋盘的右下角 给定一个棋盘及其上面的礼物的价值 请计算你最多能拿到多少