动态规划dp —— 21.乘积最大子数组

news/2024/11/8 17:56:25/

 1.状态表示

是什么?dp表中里的值所表示的含义就是状态表示

因为要考虑负数情况,负数乘以最大数就等于最小数了,负数乘以最小数就是最大数了

f[i]表示:以i位置为结尾的所以子数组中最大乘积

g[i]表会:以i位置为结尾的所以子数组中最小乘积

2.状态转移方程

分为两种情况:1.长度为1  2.长度大于1

 f[i] = max(nums[i] , f[i-1] * nums[i] , g[i-1] * nums[i])

  f[i] = min(nums[i] , f[i-1] * nums[i] , g[i-1] * nums[i])

3.初始化

保证填表的时候不越界

用加一个虚拟节点的方法

1.里面的值要保证后续填表是正确的

2.注意下标的映射关系

为了不影响结果,第一个位置填1

f[0] = g[0] = 1;

4.填表顺序

为了填写当前状态的时候,所需要的状态已经计算过了

从左往右,两个表一起填

5.返回值

题目要求+状态表示

f表里的最大值

6.代码

class Solution {
public:int maxProduct(vector<int>& nums) {int n = nums.size();//1.创建dp表vector<int> f(n+1);vector<int> g(n+1);//2.初始化f[0] = g[0] = 1;//3.填表for(int i = 1;i < n+1; i++){f[i] = max(nums[i-1] ,max( f[i-1] * nums[i-1] , g[i-1] * nums[i-1]));g[i] = min(nums[i-1] ,min( f[i-1] * nums[i-1] , g[i-1] * nums[i-1]));}//4.返回值int ret = INT_MIN;for(int j = 1; j < n+1;j++){ret = max(ret , f[j]);}return ret;}
};


http://www.ppmy.cn/news/337010.html

相关文章

极米投影仪: U盘安装APP

今天&#xff0c;突然想安装APP&#xff0c;可是我的极米投影仪没找到入口。后来到官方群里边看到了一个重命名APK的方式&#xff0c;总结如下&#xff1a; 下载APK 比方说&#xff0c;安装《沙发管家》APP。http://www.shafa.com/ 下载好了APP安装包&#xff1a; 沙发管家V…

极米H6投影仪和H3S区别 极米H6和极米H3S哪款好

在光学显示方面&#xff0c;极米H3S的亮度为2200ANSI流明&#xff0c;画质方面为1080P的物理分辨率&#xff0c;能够实现较为清晰明亮的画面。此次新发布的极米H6&#xff0c;在亮度方面应该会有进一步的提升&#xff0c;据悉使用的是LED光源。与极米H6处于相似价位的当贝X3投影…

Java ~ Reference ~ Cleaner【总结】

前言 文章 相关系列&#xff1a;《Java ~ Reference【目录】》&#xff08;持续更新&#xff09;相关系列&#xff1a;《Java ~ Reference ~ Cleaner【源码】》&#xff08;学习过程/多有漏误/仅作参考/不再更新&#xff09;相关系列&#xff1a;《Java ~ Reference ~ Cleaner…

雷神/雷电模拟器 之已开启,但不显示指针位置与显示点按操作反馈处理方案

Time: 2022年4月26日17:46:13 by:MemroyErHero 1 正常显示效果 2 异常显示效果 解决方案 1 打开雷电 / 雷神模拟器的安装目录,如下图 2 打开这个 vms 文件夹 3 在 vms 文件夹下,新建一个名为: debug 的文本文件.如下图 4 重启雷电/雷神模拟器,并开启显示即可.

模拟雷神飞机游戏(简易版)

import java.awt.Graphics; import java.awt.Image;import javax.swing.ImageIcon; /*** 飞机类* author Administrator**/ public abstract class Airplane implements Drawable ,Runnable{protected int x,y;//位置坐标protected Direction dir;//方向属性protected ImageIco…

计算机无法连接蓝牙键盘,蓝牙鼠标连接不上电脑怎么办?

我们买笔记本时都会买上蓝牙鼠标&#xff0c;现在也有很多无线鼠标&#xff0c;不过那个要带上个无线发射器&#xff0c;这样会占用一个USB口。所以很多较高端的笔记本&#xff0c;超级本都会买蓝牙鼠标&#xff0c;但有时很多用户经常会碰到加不上蓝牙鼠标的问题。这里我们来分…

无线鼠标开机自动关闭,连接不上电脑?【红光一闪,鼠标不显】

一&#xff0c;故事 1&#xff0c;事情是这样的&#xff0c;我购买的无线鼠标&#xff0c;用着挺好的&#xff0c;但是一个不小心就摔倒在地了&#xff0c;再用的时候&#xff0c;就不能够显示再桌面上了。 出现的情况就是我打开无线鼠标&#xff0c;然后无线鼠标底部红光一亮就…

FFmpeg学习全家桶合集---致敬雷神

&#xff08;一&#xff09;FFmpeg命令行学习 ** 前言 概念 媒体流&#xff08;Stream&#xff09;&#xff1a;表示时间轴上的一段连续数据&#xff0c;如一段声音数据、一段视频数据或一段字幕数据&#xff0c;可以是压缩的&#xff0c;也可以是非压缩的&#xff0c;压缩的…