当前位置: 首页 > news >正文

动态规划-状态机(188. 买卖股票的最佳时机 IV)

状态分类:

f[i,j,0]考虑前i只股票,进行了j笔交易,目前未持有股票 所能获得最大利润

f[i,j,1]考虑前i只股票,进行了j笔交易,目前持有股票 所能获得最大利润

状态转移:

f[i][j][0] = Math.max(f[i-1][j][0],f[i-1][j][1]+prices[i]);

f[i][j][1] = Math.max(f[i-1][j][1],f[i-1][j-1][0]-prices[i]);

 

class Solution {static int INF = 0x3f3f3f3f;public int maxProfit(int k, int[] prices) {int n = prices.length;int f[][][] = new int[n+1][k+1][2];for(int i = 0;i <= n;i++){for(int j = 0;j <= k;j++){Arrays.fill(f[i][j],-INF);}}for(int i = 0;i <= n;i++)f[i][0][0] = 0;for(int i = 1;i <= n;i++){for(int j = 1;j <= k;j++){f[i][j][0] = Math.max(f[i-1][j][0],f[i-1][j][1]+prices[i-1]);f[i][j][1] = Math.max(f[i-1][j][1],f[i-1][j-1][0]-prices[i-1]);}}int ans = 0;for(int i = 0;i <= k;i++){ans = Math.max(ans,f[n][i][0]);}return ans;}
}

还有一位大佬的看不懂的极妙解法--滚动的dp?

// java
class Solution {public int maxProfit(int k, int[] prices) {int[] buy = new int[k], sell = new int[k];Arrays.fill(buy, -prices[0]);for (int i = 1; i < prices.length; i++) {for (int j = 0, pre = 0; j < k; j++) {buy[j] = (pre = Math.max(buy[j], pre - prices[i]));sell[j] = (pre = Math.max(sell[j], pre + prices[i]));}}return Math.max(sell[k - 1], 0);}
}

相关文章:

动态规划-状态机(188. 买卖股票的最佳时机 IV)

状态分类&#xff1a; f[i,j,0]考虑前i只股票&#xff0c;进行了j笔交易&#xff0c;目前未持有股票 所能获得最大利润 f[i,j,1]考虑前i只股票&#xff0c;进行了j笔交易&#xff0c;目前持有股票 所能获得最大利润 状态转移&#xff1a; f[i][j][0] Math.max(f[i-1][j][0],f[…...

银行业务队列简单模拟(队列应用)

设某银行有A、B两个业务窗口&#xff0c;且处理业务的速度不一样&#xff0c;其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时&#xff0c;B窗口处理完1个顾客。给定到达银行的顾客序列&#xff0c;请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时…...

2023/8/8 下午10:42:04 objectarx

2023/8/8 下午10:42:04 objectarx 2023/8/8 下午10:42:16 ObjectARX(AutoCAD Runtime Extension)是用于开发和自定义AutoCAD软件的编程接口。ObjectARX允许开发者使用C++、.NET等编程语言来创建插件、扩展功能和定制化AutoCAD的行为。 通过ObjectARX,开发者可以访问Auto…...

Day-06 基于 Docker安装 Nginx 镜像

1.去官方公有仓库查询nginx镜像 docker search nginx 2.拉取该镜像 docker pull nginx 3. 启动镜像&#xff0c;使用nginx服务&#xff0c;代理本机8080端口(测试是不是好使) docker run -d -p 8080:80 --name nginx-8080 nginx docker ps curl 127.0.0.1:8080...

linux入门---信号的保存和捕捉

目录标题 信号的一些概念信号的保存pending表block表handler表 信号的捕捉内核态和用户态信号的捕捉 信号的一些概念 1.进程会收到各种各样的信号&#xff0c;那么程序对该信号进行实际处理的动作叫做信号的递达。 2.我们之前说过当进程收到信号的时候可能并不会立即处理这个信…...

5.外部中断

中断初始化配置步骤&#xff1a; IO口初始化配置 开启中断总允许EA 打开某个IO口的中断允许 打开IO口的某一位的中断允许 配置该位的中断触发方式 中断函数&#xff1a; #pragma vector PxINT_VECTOR __interrupt void 函数名(void){}#pragma vector PxINT_VECTOR __int…...

Mydb数据库问题

1、请简要介绍一下这个基于 Java 的简易数据库管理系统。它的主要功能是什么&#xff1f; TM&#xff08;Transaction Manager&#xff09;&#xff1a;事务管理器&#xff0c;用于维护事务的状态&#xff0c;并提供接口供其他模块查询某个事务的状态。DM&#xff08;Data Man…...

部署并应用ByteTrack实现目标跟踪

尽管YOLOv8已经集成了ByteTrack算法&#xff0c;但在这里我还是想利用ByteTrack官网的代码&#xff0c;自己实现目标跟踪。 要想应用ByteTrack算法&#xff0c;首先就要从ByteTrack官网上下载并安装。虽然官网上介绍得很简单&#xff0c;只需要区区6行代码&#xff0c;但对于国…...

MacOS怎么配置JDK环境变量

1 输入命令看是否配置了JDk 的环境变量&#xff1a;echo $JAVA_HOME 要是什么也没输出 证明是没配置 2 输入命令编辑 sudo vim ~/.bash_profile 然后按 i &#xff0c;进入编辑模式&#xff0c;粘贴下面的代码&#xff0c;注意&#xff1a;JAVA_HOME后面路径需要改成自己的版…...

Spring Boot 开发16个实用的技巧

当涉及到使用Spring Boot开发应用程序时&#xff0c;以下是16个实用的技巧&#xff1a; 1. **使用Spring Initializr**&#xff1a;Spring Initializr是一个快速创建Spring Boot项目的工具&#xff0c;可以帮助您选择项目依赖和生成项目骨架。 2. **自动配置**&#xff1a;Sp…...

《机器学习实战》学习记录-ch2

PS: 个人笔记&#xff0c;建议不看 原书资料&#xff1a;https://github.com/ageron/handson-ml2 2.1数据获取 import pandas as pd data pd.read_csv(r"C:\Users\cyan\Desktop\AI\ML\handson-ml2\datasets\housing\housing.csv")data.head() data.info()<clas…...

lv7 嵌入式开发-网络编程开发 07 TCP服务器实现

目录 1 函数介绍 1.1 socket函数 与 通信域 1.2 bind函数 与 通信结构体 1.3 listen函数 与 accept函数 2 TCP服务端代码实现 3 TCP客户端代码实现 4 代码优化 5 练习 1 函数介绍 其中read、write、close在IO中已经介绍过&#xff0c;只需了解socket、bind、listen、acc…...

mysql技术文档--阿里巴巴java准则《Mysql数据库建表规约》--结合阿丹理解尝试解读--国庆开卷

阿丹&#xff1a; 国庆快乐呀大家&#xff01; 在项目开始前一个好的设计、一个健康的表关系&#xff0c;不仅会让开发变的有趣舒服&#xff0c;也会在后期的维护和升级迭代中让系统不断的成长。那么今天就认识和解读一下阿里的准则&#xff01;&#xff01; 建表规约 表达是…...

Qt+openCV学习笔记(十六)Qt6.6.0rc+openCV4.8.1+emsdk3.1.37编译静态库

前言&#xff1a; 有段时间没来写文章了&#xff0c;趁编译库的空闲&#xff0c;再写一篇记录文档 WebAssembly的发展逐渐成熟&#xff0c;即便不了解相关技术&#xff0c;web前端也在不经意中使用了相关技术的库&#xff0c;本篇文档记录下如何编译WebAssembly版本的openCV&…...

JUC第十四讲:JUC锁: ReentrantReadWriteLock详解

JUC第十四讲&#xff1a;JUC锁: ReentrantReadWriteLock详解 本文是JUC第十四讲&#xff1a;JUC锁 - ReentrantReadWriteLock详解。ReentrantReadWriteLock表示可重入读写锁&#xff0c;ReentrantReadWriteLock中包含了两种锁&#xff0c;读锁ReadLock和写锁WriteLock&#xff…...

在vue3中使用vite-svg-loader插件

vite-svg-loader插件可以让我们像使用vue组件那样使用svg图&#xff0c;使用起来超级方便。 安装 npm install vite-svg-loader --save-dev使用 import svgLoader from vite-svg-loaderexport default defineConfig({plugins: [vue(), svgLoader()] })组件里使用 在路径后加…...

国庆10.4

QT实现TCP服务器客户端 服务器 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> //服务器头文件 #include <QTcpSocket> //客户端头文件 #include <QList> //链表容器 #include <QMe…...

2023/8/12 下午8:41:46 树状控件guilite

2023/8/12 下午8:41:46 树状控件guilite 2023/8/12 下午8:42:08 树状控件(Tree View)是一种常见的图形用户界面(GUI)元素,它通常用于显示层次结构数据或文件系统的目录结构。Guilite 是一个轻量级的跨平台 GUI 库,支持多种控件,包括树状控件。 在 Guilite 中使用树状…...

BL808学习日志-2-LVGL for M0 and D0

一、lvgl测试环境 对拿到的M1S_DOCK开发板进行开发板测试&#xff0c;博流的官方SDK是支持M0和D0两个内核都进行测试的&#xff1b;但是目前只实现了M0的LVGLBenchmark&#xff0c;测试D0内核中发现很多莫名其妙的问题。一会详细记录。 使用的是开发板自带的SPI显示屏&#xff…...

treectrl类封装 2023/8/13 下午4:07:35

2023/8/13 下午4:07:35 treectrl类封装 2023/8/13 下午4:07:53 TreeCtrl 类是一个常用的图形用户界面控件,用于实现树形结构的展示和交互。以下是一个简单的 TreeCtrl 类的封装示例: python import wxclass MyTreeCtrl(wx.TreeCtrl):def __init__(self, parent):super()…...

为AI编程助手构建本地知识库:YAP项目实战指南

1. 项目概述&#xff1a;当AI编程助手遇上专属知识库如果你和我一样&#xff0c;日常重度依赖Cursor这类AI编程助手&#xff0c;那你一定遇到过这样的场景&#xff1a;面对一个复杂的内部项目&#xff0c;或者一个使用了大量私有库、自定义框架的代码库&#xff0c;Cursor的响应…...

2026国产SCARA机器人品牌深度横评:高精度、零件分拣多维度对比

SCARA机器人作为工业自动化领域的重要装备&#xff0c;凭借其高速、高精度、易集成等优势&#xff0c;广泛应用于3C电子、医疗器械、新能源等精密装配场景。随着国产机器人品牌的崛起&#xff0c;市场竞争格局正在发生深刻变化。本文基于公开技术参数、市场应用数据及行业调研&…...

网盘直链解析工具完整指南:跨平台文件获取解决方案

网盘直链解析工具完整指南&#xff1a;跨平台文件获取解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘…...

安全生产隐患识别太难?实测实在Agent:AI模型语义分析能力测评详解与信创落地指南

摘要&#xff1a; 步入2026年&#xff0c;安全生产已进入“全量数字化”与“法制化”深度融合的高压期。随着《安全生产法》的持续深化执行&#xff0c;企业面临着海量隐患识别、跨系统数据流转及信创环境适配的三重挑战。传统的人工排查与基于API的自动化手段&#xff0c;在面…...

免费开源运动分析神器:Kinovea 完全指南

免费开源运动分析神器&#xff1a;Kinovea 完全指南 【免费下载链接】Kinovea Video solution for sport analysis. Capture, inspect, compare, annotate and measure technical performances. 项目地址: https://gitcode.com/gh_mirrors/ki/Kinovea Kinovea 是一款功…...

告别“对方已撤回“!PC版微信QQ防撤回补丁终极指南

告别"对方已撤回"&#xff01;PC版微信QQ防撤回补丁终极指南 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; 项目地址: https://gitco…...

从零构建:基于Air724UG的4G LTE物联网数据透传系统

1. 认识Air724UG模块&#xff1a;你的物联网数据搬运工 第一次拿到Air724UG这个巴掌大的4G模块时&#xff0c;我完全没想到它能成为我物联网项目的核心组件。这个来自合宙通信的Cat.1模块&#xff0c;最大的特点就是用2G的价格享受4G的体验。实测在市区环境下&#xff0c;它的上…...

声明式数据转换利器:Refiner 实战指南与架构集成

1. 项目概述与核心价值最近在折腾一个老项目的数据清洗和转换&#xff0c;被一堆格式混乱、结构不一的JSON文件搞得焦头烂额。手动写脚本处理吧&#xff0c;每次需求一变就得重写&#xff0c;维护成本太高&#xff1b;用现成的ETL工具吧&#xff0c;又觉得过于笨重&#xff0c;…...

卸载软件后右键菜单残留?用PowerShell精准清理注册表(附一键备份脚本)

彻底告别右键菜单残留&#xff1a;PowerShell注册表清理实战指南 刚卸载完某款压缩软件&#xff0c;却发现右键菜单里依然顽固地留着它的选项——这种经历恐怕不少Windows用户都遇到过。上周帮同事处理电脑时&#xff0c;就遇到了一个典型案例&#xff1a;卸载"可牛压缩&q…...

opencv-第四章:图像轮廓检测

OpenCV-计算机视觉技术&#xff08;林伟鹏版&#xff09; 第四章&#xff1a;图像轮廓检测 文章目录OpenCV-计算机视觉技术&#xff08;林伟鹏版&#xff09;前言一、图像轮廓检测概念1.概念二、图像轮廓检测1.图像二值化转换2.图像轮廓匹配3.二值图轮换轮廓检测4.图像轮廓检测…...