首页 > 其他分享 >礼物的最大价值 剑指offer

礼物的最大价值 剑指offer

时间:2024-12-19 18:56:14浏览次数:7  
标签:递归 格子 offer 坐标 数组 价值 礼物

题目描述

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

思路分析

        例如,在下面的棋盘中,如果沿着带下画线的数字的线路(1、12、5、7、7、16、5),那么我们能拿到最大价值为 53 的礼物。

        这是一个典型的能用动态规划解决的问题。我们先用递归的思路来分析。我们先定义第一个函数f(i,j)表示到达坐标为(i,j)的格子时能拿到的礼物总和的最大值。根据题目要求,我们有两种可能的途径到达坐标为(i,j)的格子:通过格子(i-1,j)或者(i,j-1)。所以f(i,j)=max(f(i-1,j),f(i,j-1))+gift[i,j]。gift[i,j]表示坐标为(i,j)的格子里礼物的价值。
        尽管我们用递归来分析问题,但由于有大量重复的计算,导致递归的代码并不是最优的。相对而言,基于循环的代码效率要高很多。为了缓存中间计算结果,我们需要一个辅助的二维数组。数组中坐标为(i,j)的元素表示到达坐标为(i,j)的格子时能拿到的礼物价值总和的最大值。

代码实现

基本功能

 代码优化

思路分析

        接下来我们考虑进一步的优化。前面我们提到,到达坐标为(i,j)的格子时能够拿到的礼物的最大价值只依赖坐标为(i-1,j)和(i,j-1)的两个格子,因此第i-2行及更上面的所有格子礼物的最大价值实际上没有必要保存下来。我们可以用一个一维数组来替代前面代码中的二维矩阵maxValues。该一维数组的长度为棋盘的列数n。当我们计算到达坐标为(i,j)的格子时能够拿到的礼物的最大价值f(i,j),数组中前j个数字分别是f(i,0),f(i,1),…f(i,j-1),数组从下标为j的数字开始到最后一个数字,分别为f(i-1,j),f(i-1,j+1),…f(i-1,n-1)。也就是说,该数组前面j个数字分别是当前第i行前面j个格子礼物的最大价值,而之后的数字分别保存前面第i-1行n-j个格子礼物的最大价值。

代码实现

测试用例

        功能测试(多行多列的矩阵;一行或者一列的矩阵;只有一个数字的矩阵)。
        特殊输入测试(指向矩阵数组的指针为 nullptr)。

本题考点

        考查应聘者用动态规划分析问题的能力。应聘者能够熟练应用动态规划分析问题是解答这道面试题的前提。
        考查应聘者对递归及时间效率的理解。如果只是能够把递归分析转换为递归代码,则应聘者不一定能够通过这道题的面试。面试官期待应聘者能够用基于循环的代码来避免不必要的重复计算。

标签:递归,格子,offer,坐标,数组,价值,礼物
From: https://blog.csdn.net/2301_78353179/article/details/144592093

相关文章

  • 珠海盈致:智能制造赋能企业,解锁全新价值维度
    智能制造是信息技术与制造技术的深度融合,经历了从数字化制造到“互联网+制造”,再到新一代智能制造的三个阶段。它是一个大系统,贯穿于产品、制造、服务的全生命周期,由智能产品、智能生产、智能服务三大功能系统,以及工业智联网和智能制造云两大支撑系统组成。 智能制造的实施内......
  • 探索基于 SSM 框架 Vue 电脑测评系统:解读电脑核心价值
    3系统分析3.1可行性分析通过对本基于SSM框架的电脑测评系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。3.1.1技术可行性本基于SSM框架的电脑测评系统采用JAVA作为开发语言,SSM框架,......
  • 求职者必备:如何用管理软件实现高效的Offer规划
    一、毕业季Offer规划的复杂性毕业季的Offer规划不仅仅是简单的找工作过程,更是一次紧张的时间赛跑。从投递简历、面试安排、薪资谈判到最终的决定,整个过程充满了大量的任务和步骤。这些任务和环节涉及不同的公司、职位要求、面试形式以及其他各种变量。如果没有一个高效的工具来帮......
  • DevExpress offers a robust suite CRACK
    DevExpressoffersarobustsuiteCRACKDevExpressv24.2addsAI-poweredextensionsforadvanceddocumentediting,smartactions,andversatileAIchatcomponentsacrossplatforms.DevExpressoffersarobustsuiteofdevelopertoolsdesignedto......
  • 复杂链表的复制 剑指offer
    题目描述        请实现函数ComplexListNode*Clone(ComplexListNode*pHead),复制一个复杂链表。在复杂链表中,每个节点除了有一个m_pNext指针指向下一个节点,还有一个m_pSibling指针指向链表中的任意节点或者nullptr。        节点的C++定义如下: 代......
  • 二叉搜索树与双向链表 剑指offer
    题目描述        输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。比如,输入下图中左边的二叉搜索树,则输出转换之后的排序双向链表。        树节点的定义如下: 题目分析      ......
  • 二叉树中和为某一值的路径 剑指offer
    题目描述        输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。        二叉树节点的定义如下:题目分析                分析完前面具体的例子......
  • 英国二手市场火爆!英国人今年圣诞将花20.5亿英镑买二手礼物
    随着全球可持续消费理念的普及,英国二手市场迎来了前所未有的增长,尤其在2024年的圣诞季,这一趋势更是表现得淋漓尽致。据数据显示,英国消费者今年圣诞节在二手礼物上的支出预计将达到20.5亿英镑,这一现象背后的原因和市场机遇值得深挖。**独角兽翻译器**一、英国二手市场为何火爆......
  • 管理能力评估、服务能力评估、治理成效评估、资产价值评估、数据质量评估
    管理能力评估目的:衡量组织在数据管理各个环节(如数据规划、数据架构设计、数据存储管理、数据安全管理等)中所展现出的规划、组织、协调和执行能力。评估维度:战略规划能力:评估是否有明确的数据战略规划,且该规划与组织整体战略目标的契合度,以及规划在时间、资源分配等方面的合理......
  • GitHub 与 GitLab:差异、应用场景与核心价值
    GitHub与GitLab:差异、应用场景与核心价值一、引言在当今的软件开发与版本控制领域,GitHub和GitLab无疑是两款极具影响力的平台。它们都基于Git构建,为开发者提供了强大的代码托管、协作与项目管理功能。然而,二者在诸多方面存在明显区别,各自有着独特的优势与适用场景......