蓝桥杯动态规划每日一题

news2024/11/15 9:03:16

一、买卖股票的最佳时机III

股票最佳时机

1.状态表示

dp[i]:到达i天,所能获得的最大利润

但是我们唯一不清楚的是,他完成了几笔交易,所以不如,就设置一种二维数组

dp[m][3]

2是说第0天是第0笔,第一天是第1笔,第二天就第二笔呗。

但是我们写状态转移方程的时候发现,不好表示dp[i]和dp[i-1]之间的关系,所以进一步去细分

f[3][i]:到达i位置,买入后没有进行别的操作处于可以卖出状态

g[3][i]:到达i位置,手里没有股票处于可以买入状态

2.状态转移方程

f[i][m]=(g[i-1][m]-price[i],f[i-1][m])

g[i][m]=(f[i-1][m-1]+price[i],g[i-1][m])

3.初始化

0天0笔交易,所以默认都是0呗

但是有几个问题

初始化,要把f[0][j],也就是第0天的第一笔,第n笔交易都变为不去干扰整个表的值,也就是负无穷,但是负无穷的运算可能会让数据发生越界错误,所以要有一个足够大的数,还可以去运算所以这时候这个数0x3f3f3f3f,这个数足够大,加上负号就足够小,

f[0][0]是已经买入状态,所以他的值应该是扣钱,-price[0][0],其余0天都是-∞,第0天可以理解为第一天。当然第0笔不能这么认为哈。

4.填表顺序

从左到右,两个表一起填写。

5.返回值,返回g表g[m-1][j]中最大值即可

class Solution {
    public int maxProfit(int[] prices) {
       int m=prices.length;
       int[][]f=new int[m][3];
       int[][]g=new int[m][3];
       int INF=0x3f3f3f3f;
        for(int j=0;j<3;j++){
            f[0][j]=g[0][j]=-INF;
        }
          f[0][0]=-prices[0];
          g[0][0]=0;
     for(int i=1;i<m;i++){
       for(int j=0;j<3;j++){
       
           //状态方程可以看到,这个初始化并不容易。只有一个j-1所以不需要为了他,单独去初始化
             g[i][j]=g[i-1][j];
       f[i][j]=Math.max(g[i-1][j]-prices[i],f[i-1][j]);
           if(j-1>=0){
 g[i][j]=Math.max(f[i-1][j-1]+prices[i],g[i-1][j]);
           }
           }
       }
int ret=0;
for(int j=0;j<3;j++){
    ret=Math.max(ret,g[m-1][j]);
}
       return  ret;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1133606.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

003 后台系统-搭建前端环境

课程链接 一.下载和配置vscode与nodejs 1.vscode视频链接 2.打开vscode下载以下插件&#xff1a; 3.安装nodejs16.19.0 4.检测nodejs是否安装成功&#xff0c;安装地址无中文 在cmd界面输入命令&#xff1a;node -v 显示版本则安装成功 5.在vscode中创建工作区 在电脑中创…

嵌入式 Tomcat 调校

SpringBoot 嵌入了 Web 容器如 Tomcat/Jetty/Undertow&#xff0c;——这是怎么做到的&#xff1f;我们以 Tomcat 为例子&#xff0c;尝试调用嵌入式 Tomcat。 调用嵌入式 Tomcat&#xff0c;如果按照默认去启动&#xff0c;一个 main 函数就可以了。 简单的例子 下面是启动…

T113-S3-buildroot文件系统tar解压缩gz文件

目录 前言 一、现象描述 二、解决方案 三、tar解压缩.gz文件 总结 前言 本文主要介绍全志T113-S3平台官方SDK&#xff0c;buildroot文件系统tar不支持.gz文件解压缩的问题以及如何配置buildroot文件系统解决该问题的方法介绍。 一、现象描述 在buildroot文件系统中&#xff…

图像压缩(4)《数字图像处理》第八章 8.3节 数字图像水印

图像压缩&#xff08;3&#xff09;《数字图像处理》第八章8.3节数字图像水印 一. 前言二.章节引言三.简单综述三.本章小结四.参考文献四. 小结 一. 前言 始于那本深蓝色的大块头&#xff0c;冈萨勒斯的《数字图像处理》&#xff0c;从此走上了图像信号处理的不归路&#xff0…

Java开发-WebSocket

WebSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信-浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c;并实现 双向数据传输。 使用 导入maven坐标 <dependency><groupId>org.springframework.bo…

【Linux】安装配置虚拟机及虚拟机操作系统的安装

目录 一、操作系统 1. 介绍 2. 功能 3. 有哪些 4. 个人版本和服务器版本的区别 二、VMWare虚拟机 1. 安装 2. 配置 三、安装配置Windows Server 1. 配置 2. 安装 四、虚拟机的环境配置及连接 1. 主机连接虚拟机 2. 虚拟机环境配置及共享 3. 环境配置 一、操作系…

音乐网站播放器前后端【源码好优多】

介绍 音乐网站播放器音乐网站管理系统音乐网站后台 软件架构 使用vuespringbootmybatis-plusmysql技术的前后端分离项目 前端 安装教程 npm install&#xff08;安装运行环境&#xff09; npm run dev&#xff08;运行&#xff09; 需要有node.js环境&#xff0c;不建议使…

设计模式——UML类图

目录 UML类图介绍UML图UML图的分类 关系依赖关系泛化关系实现关系关联关系聚合关系 UML类图 介绍 uml(统一建模语言)&#xff0c;是一种用于软件系统分析和设计的语言工具&#xff0c;他用于帮助软件开发人员进行思考和记录思路的结果UML本身是一套符号的规定&#xff0c;就像…

linuxnfs服务安装与配置实践

目录 一.NFS服务 二.NFS和RPC的概念 三.什么是RPC 四.工具 五.安装配置NFS环境 1.查看一下是否有nfs-utils和rpcbind软件包的安装rpm包 2.安装nfs-utils 、rpcbind 3.环境配置 1.nfs配置文件需要遵守如下规则&#xff1a; 2.nfs语法参数解释&#xff1a; 3.nfs客户端…

Python:实现日历到excel文档

背景 日历是一种常见的工具,用于记录事件和显示日期。在编程中,可以使用Python编码来制作日历。 Python提供了一些内置的模块和函数,使得制作日历变得更加简单。 在本文,我们将探讨如何使用Python制作日历,并将日历输出到excel文档中。 效果展示 实现 在代码中会用到cale…

springboot actuator 常用接口

概述 微服务作为一项在云中部署应用和服务的新技术是当下比较热门话题&#xff0c;而微服务的特点决定了功能模块的部署是分布式的&#xff0c;运行在不同的机器上相互通过服务调用进行交互&#xff0c;业务流会经过多个微服务的处理和传递&#xff0c;在这种框架下&#xff0…

轻松驾驭!Prometheus 如何监控指标,快速定位故障

Prometheus 监控业务指标 在 Kubernetes 已经成了事实上的容器编排标准之下&#xff0c;微服务的部署变得非常容易。但随着微服务规模的扩大&#xff0c;服务治理带来的挑战也会越来越大。在这样的背景下出现了服务可观测性&#xff08;observability&#xff09;的概念。 在…

vue 记账清单

通过发送请求来从后台获取更改数据&#xff0c;需要用到钩子函数。 使用ECharts来渲染饼图。 在渲染函数中setOption动态更新饼图&#xff08;map&#xff09; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" />&l…

linux-防火墙

目录 一、防火墙概念 1.软件防火墙 2.iptables默认规则 3.iptables的五链 4.iptables动作 5.四表五链 6.iptables实例 一、防火墙概念 linux下防火墙一般分为软件防火墙、硬件防火墙 硬件防火墙&#xff1a;在硬件的级别实现防火墙过滤功能&#xff0c;性能高&#xf…

360智慧生活旗舰产品率先接入“360智脑”能力实现升级

10月25日&#xff0c;360智慧生活秋季新品及视觉云方案发布会在深圳召开。360智能硬件产品&#xff0c;诸如 360可视门铃、360智能摄像机、360行车记录仪、360儿童手表和家庭防火墙等&#xff0c;都在各自的行业有着举足轻重得地位&#xff0c;而这次发布的系列新品&#xff0c…

使用Golang策略和最佳实践高效处理一百万个请求

有效处理一百万个请求的策略与最佳实践 在不断发展的Web应用程序领域&#xff0c;处理大规模请求的能力是成功的关键因素。作为一名全栈开发人员&#xff0c;您可能熟悉Golang的效率和性能。在本文中&#xff0c;我们将深入探讨如何利用Golang来优雅地处理处理一百万个请求的挑…

【ICLR23论文】Can CNNs Be More Robust Than Transformers?

文章目录 0 Abstract1 Introduction2 Related Works3 Settings3.1 CNN Block Instantiations3.2 Computational Cost3.3 Robustness Benchmarks3.4 Training Recipe3.5 Baseline Results 4 Component Diagnosis4.1 Patchief Stem4.2 Large Kernel Size4.3 Reducing Activation …

安装 tensorflow==1.15.2 遇见的问题

一、直接安装 命令&#xff1a;pip install tensorflow1.15.2 二、换 阿里云 镜像源 命令&#xff1a;pip install -i http://mirrors.aliyun.com/pypi/simple tensorflow1.15.2 三、换 豆瓣 镜像源 命令&#xff1a;pip install http://pypi.douban.com/simple tensorflow1…

Android Glide判断图像资源是否缓存onlyRetrieveFromCache,使用缓存数据,Kotlin

Android Glide判断图像资源是否缓存onlyRetrieveFromCache&#xff0c;使用缓存数据&#xff0c;Kotlin import android.graphics.Bitmap import android.os.Bundle import android.util.Log import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity…