【算法日志】动态规划刷题:股票买卖问题(day41)

news/2024/10/25 1:31:50/

代码随想录刷题60Day


目录

前言

买卖股票的最佳时机1

买卖股票的最佳时机2

买卖股票的最佳时机3

买卖股票的最佳时机4


前言

本日着重于多状态问题的处理,各状态之间会有一定联系,状态转移方程将不再局限一个。


买卖股票的最佳时机1

    int maxProfit(vector<int>& prices) {int size = prices.size();vector<vector<int>> dp(2, vector<int>(2)); dp[0][0] -= prices[0];dp[0][1] = 0;for (int i = 1; i < size; i++) {dp[i % 2][0] = max(dp[(i - 1) % 2][0], -prices[i]);dp[i % 2][1] = max(dp[(i - 1) % 2][1], prices[i] + dp[(i - 1) % 2][0]);}return dp[(size - 1) % 2][1];}

买卖股票的最佳时机2

    int maxProfit1(vector<int>& prices) {const int size = prices.size();vector<vector<int>> dp(2, vector<int> (2, 0));dp[0][1] = -prices[0];for (int i = 1; i < size; ++i){dp[i % 2][0] = max(dp[(i - 1) % 2][0], dp[(i - 1) % 2][1] + prices[i]);dp[i % 2][1] = max(dp[(i - 1) % 2][1], dp[(i - 1) % 2][0] - prices[i]);}return dp[(size - 1) % 2][0];}

买卖股票的最佳时机3

	int maxProfit(vector<int>& prices) {//---------case 1--------------int size = prices.size();vector<vector<int>> dp(size, vector<int>(5, 0));dp[0][1] = -prices[0];dp[0][3] = -prices[0];for (int i = 1; i < size; ++i){dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] - prices[i]);dp[i][2] = max(dp[i - 1][2], dp[i - 1][1] + prices[i]);dp[i][3] = max(dp[i - 1][3], dp[i - 1][2] - prices[i]);dp[i][4] = max(dp[i - 1][4], dp[i - 1][3] + prices[i]);}return dp[size - 1][4];//----------case 2--------------int size = prices.size();vector<vector<int>> dp(2, vector<int>(4, 0));dp[0][0] = -prices[0];dp[0][2] = -prices[0];for (int i = 1; i < size; ++i){dp[i % 2][0] = max(dp[(i - 1) % 2][0], - prices[i]);dp[i % 2][1] = max(dp[(i - 1) % 2][1], dp[(i - 1) % 2][0] + prices[i]);dp[i % 2][2] = max(dp[(i - 1) % 2][2], dp[(i - 1) % 2][1] - prices[i]);dp[i % 2][3] = max(dp[(i - 1) % 2][3], dp[(i - 1) % 2][2] + prices[i]);}return dp[(size - 1) % 2][3];}

买卖股票的最佳时机4

int maxProfit(int k, vector<int>& prices){//----------------case 1------------------------const int size = prices.size();vector<vector<int>> dp(size, vector<int>(2 * k + 1, 0));for (int i = 1; i <= k; ++i)dp[0][i * 2 - 1] = -prices[0];for (int i = 1; i < size; ++i){int sign = -1;for (int j = 1; j < (2 * k + 1); ++j){dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - 1] + sign * prices[i]);sign *= -1;}}return dp[size - 1][2 * k];//----------------case 2-----------------------const int size = prices.size();vector<vector<int>> dp(2, vector<int>(2 * k + 1, 0));for (int i = 1; i <= k; ++i)dp[0][i * 2 - 1] = -prices[0];for (int i = 1; i < size; ++i){int sign = -1;for (int j = 1; j < (2 * k + 1); ++j){dp[i % 2][j] = max(dp[(i - 1) % 2][j], dp[(i - 1) % 2][j - 1] + sign * prices[i]);sign *= -1;}}return dp[(size - 1) % 2][2 * k];}

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

相关文章

minio文件服务器开启https

一、准备证书 你要有https安全证书&#xff0c;我的是适用于nginx的证书 私钥 xxxx.key 公钥 xxxx.pem 二、上传证书到minio服务器 然后看看你的minio docker 有没有把 /root/.minio 挂载在主机上&#xff0c;如果有那么把两个证书文件放在/root/.minio/certs目录里面。…

SSM - Springboot - MyBatis-Plus 全栈体系(三)

第二章 SpringFramework 一、技术体系架构 1. 总体技术体系 1.1 单一架构 一个项目&#xff0c;一个工程&#xff0c;导出为一个war包&#xff0c;在一个Tomcat上运行。也叫all in one。 单一架构&#xff0c;项目主要应用技术框架为&#xff1a;Spring , SpringMVC , Myba…

碎片笔记|可训练非自回归解码策略

前言&#xff1a;前段时间在和学长的一次讨论中听他偶然提到一句可训练的解码策略&#xff0c;觉得很新鲜&#xff0c;于是便有了这篇文章。本文大致讲述一下可训练解码策略的发展历程及几个经典工作的思路。&#xff08;本文初稿写于2023年3月16日&#xff09; 常规的解码策略…

国际站腾讯云容器镜像服务介绍!!

腾讯云容器镜像服务&#xff1a; 腾讯云的容器镜像服务Tencent Cloud Container Registry&#xff08;TCR&#xff09;旨在为开发者和企业供给高效、安全的容器镜像办理和存储平台&#xff0c;以处理容器镜像的保管、分发和办理问题。容器镜像是一种轻量级、可移植的软件包&…

Linux socket网络编程实战(tcp)实现双方聊天

在上节已经系统介绍了大致的流程和相关的API&#xff0c;这节就开始写代码&#xff01; 回顾上节的流程&#xff1a; 创建一个NET文件夹 来存放网络编程相关的代码&#xff1a; tcp服务端代码初步实现--上 这部分先实现服务器的连接部分的代码并进行验证 server1.c&#xff…

使用 python 源码搭建 conda 环境

今天需要使用 python 2.6.8 的环境&#xff0c;发现 conda 设置成清华源后&#xff0c;没有旧版本了。所以打算从官网上下载一份 python 进行安装&#xff0c; 结果发现&#xff0c;conda 不能直接安装离线包&#xff08;也可能我没找到方法&#xff09;&#xff0c;经过一番尝…

关闭浏览器的跨域校验

首发博客地址 问题描述 当你访问资源失败&#xff0c;并遇到以下类似提示时&#xff1a; Access to script at 资源路径 from origin null has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrom…

《信息系统项目管理师教程(第4版)》第15章 项目风险管理 知识点汇总

文章只对常见考点进行整理&#xff0c;有关项目风险管理的完整知识还请参照教程。 风险基础知识 1、风险的属性 随机性相对性可变性 2.风险的分类 按后果分&#xff1a;纯粹风险、投机风险&#xff0c;纯粹风险和 投机风险在一定条件下可以互相转化 按可预测性分&#xff…