【动态规划】按摩师

devtools/2024/12/26 8:24:51/

 题目链接:

面试题 17.16. 按摩师 - 力扣(LeetCode)

1、状态表示

用两个dp表,分别表示到当前位置接受预约和不接受预约

f[i]:表示到 i 位置,接受预约的最优预约集合

g[i]:表示到 i 位置,不接受预约的最有预约集合

2、方程

若当前位置接受预约,那么当前位置的前一个位置(i-1)必然不接受预约,g[i-1]即为到前一个位置为止最优预约集合。方程为:f[i]=g[i-1]+nums[i] 

若当前位置不接受预约,那么当前位置的前一个位置可能接受预约(f[i-1]),也可能不接受预约(g[i-1]);当前位置不接受预约,nums[i]直接忽略。方程为:g[i]=max(f[i-1],g[i-1])

3、初始化

接受预约状态表vector<int> f(n)的第一个位置f[0]表示0位置接受预约,因此f[0]=nums[0]

不接受预约状态表vector<int> g(n)的第一个位置g[0]表示0位置不接受预约,因此g[0]=0

4、填表顺序

后面的值与前面值有关,由左向右

5、返回值

最后一个位置不确定是接受还是不接受预约,选择f表与g表中较大的一个返回即可

代码实现:

class Solution {
public:int massage(vector<int>& nums) {int n=nums.size();if(n==0)    return 0;//当nums为空时单独处理,否则后续会出现非法访问的问题//if(n==1)    return nums[0];vector<int> f(n,0);auto g=f;f[0]=nums[0];g[0]=0;for(int i=1;i<n;i++){f[i]=g[i-1]+nums[i];g[i]=max(f[i-1],g[i-1]);//cout<<f[i]<<"  "<<g[i]<<endl;}int x=max(f[n-1],g[n-1]);return x;}
};


http://www.ppmy.cn/devtools/145490.html

相关文章

Highcharts 饼图:数据可视化利器

Highcharts 饼图&#xff1a;数据可视化利器 引言 在数据可视化的领域中&#xff0c;饼图作为一种经典且直观的图表类型&#xff0c;被广泛应用于各种行业和场景中。Highcharts&#xff0c;作为一个功能强大且易于使用的JavaScript图表库&#xff0c;为我们提供了创建交互式和…

分布式事务解决方案seata和MQ

seata之XA模式 特点&#xff1a;强一致性、会锁定资源。 seata之AT模式 seata之TCC模式 特点&#xff1a;对代码有侵入 MQ解决分布式事务 特点&#xff1a;效率高、实时性差 分布式事务的消息幂等 1、tokenredis保证幂等 2、分布式锁 分布式任务调度

(八)循环神经网络_门控循环单元GRU

一、提出背景 2014年提出&#xff0c;主要针对LSTM模型计算比较复杂容易出现梯度消失或爆炸的问题进行改进。 二、与LSTM的区别 三、网络结构 1. 整体结构 2. 重置门 3. 更新门 4. 候选隐状态 5. 隐状态 四、总结

Android基于Path的addRoundRect,Canvas剪切clipPath简洁的圆形图实现,Kotlin(2)

Android基于Path的addRoundRect&#xff0c;Canvas剪切clipPath简洁的圆形图实现&#xff0c;Kotlin&#xff08;2&#xff09; import android.content.Context import android.graphics.BitmapFactory import android.graphics.Canvas import android.graphics.Path import a…

在 CentOS 系统上安装 ClickHouse

在 CentOS 系统上安装 ClickHouse 数据库相对简单&#xff0c;可以通过官方提供的安装包来进行。以下是详细的安装步骤。 1. 更新系统 首先&#xff0c;确保你的系统是最新的&#xff0c;更新软件包和系统库&#xff1a; sudo yum update -y2. 安装依赖库 ClickHouse 需要一…

Leetcode 394-字符串解码

给定一个经过编码的字符串&#xff0c;返回它解码后的字符串。 编码规则为: k[encoded_string]&#xff0c;表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的&#xff1b;输入字符串中没有额外的空格&#xff0c;且…

JVM简介—垃圾回收器和内存分配策略

1.垃圾回收概述 2.如何判断对象存活 (1)引用计数算法 给对象添加一个引用计数器&#xff0c;每当一个地方引用它时就将计数器加1&#xff0c;当引用失效时就将计数器减1&#xff0c;任何时刻计数器为0的对象都不再被使用。 这种算法简单&#xff0c;但是有个致命的缺点&#xf…

AI领域年度精彩报告┆国家优青马超教授:自动驾驶多模态场景理解与生成

本文为马超教授在2024年中国图象图形学学会青年科学家会议中所作的精彩报告《自动驾驶多模态场景理解与生成》的节选&#xff0c;经马老师同意后分享给读者&#xff0c;文中所有材料已经取得作者授权。 1.报告嘉宾介绍 马超&#xff0c;上海交通大学人工智能研究院教授&#x…