当前位置:网站首页>动态规划——股票买卖5
动态规划——股票买卖5
2022-07-27 13:29:00 【战士小小白】
股票买卖 V
给定一个长度为 N 的数组,数组中的第 i 个数字表示一个给定股票在第 i 天的价格。
设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):
- 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
- 卖出股票后,你无法在第二天买入股票 (即冷冻期为 11 天)。
输入格式
第一行包含整数 N,表示数组长度。
第二行包含 N 个不超过 1000010000 的正整数,表示完整的数组。
输出格式
输出一个整数,表示最大利润。
数据范围
1≤N≤1051≤N≤105
输入样例:
5
1 2 3 0 2
输出样例:
3
样例解释
对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出],第一笔交易可得利润 2-1 = 1,第二笔交易可得利润 2-0 = 2,共得利润 1+2 = 3。
#include <bits/stdc++.h>
using namespace std;
const int N = 100010, INF = 0x3f3f3f3f;
int n;
int w[N];
int f[N][3];
int main()
{
scanf("%d", &n);
for(int i = 1; i <= n; i ++) scanf("%d", &w[i]);
f[0][0] = f[0][1] = -INF;
f[0][2] = 0;
for(int i = 1; i <= n; i ++)
{
f[i][0] = max((f[i - 1][2] - w[i]), f[i - 1][0]);
f[i][1] = f[i - 1][0] + w[i];
f[i][2] = max(f[i - 1][1], f[i - 1][2]);
}
printf("%d\n", max(f[n][1], f[n][2]));
return 0;
}

边栏推荐
- <C> C语言哈希表使用
- np.arange()和 range()的用法及区别
- 基于GEC6818开发板的相册
- Pure C handwriting thread pool
- Docker practical experience: deploy mysql8 master-slave replication on docker
- 软件产品第三方测试费用为什么没有统一的报价?
- C语言基础知识梳理总结
- PROFINET 模拟器使用教程
- 【STM32】EXTI
- Ten thousand words detailed Google play online application standard package format AAB
猜你喜欢
随机推荐
Getting started for beginners: build your own blog with WordPress
Carla notes (04) - client and world (create client, connect world, batch object, set weather, set lights, world snapshots)
Hdu1422 revisits the world cup [DP]
基于企业知识图谱的企业关联关系挖掘
Why does script file 'd:\anaconda3\envs\pad appear_ env\Scripts\pip-script. py‘ is not present.
10 practical uses of NFT
线程知识总结
PROFINET 模拟器使用教程
C语言基础知识梳理总结
Golang excellent open source project summary
正向代理与反向代理
Airport cloud business sign analysis
Import the virtual machine officially made by Kali Linux into Oracle VirtualBox
面试八股文之·TCP协议
Blocking queue
Win11壁纸变黑怎么办?Win11壁纸变黑了的解决方法
「游戏引擎 浅入浅出」4.1 Unity Shader和OpenGL Shader
开源版思源怎么私有部署
HDU4565 So Easy! [matrix multiplication] [derivation]
Advanced MySQL III. storage engine









