股票买卖III

2024-06-01 16:52
文章标签 iii 股票买卖

本文主要是介绍股票买卖III,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

时间限制:1秒        内存限制:128M

题目描述
给定一个长度为�N的数组,数组中的第 i 个数字表示一个给定股票在第�i天的价格。

设计一个算法来计算你所能获取的最大利润。你最多可以完成两笔交易。

注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
输入格式
第一行包含整数�N,表示数组长度。

第二行包含�N个不大于10910​9​​的正整数,表示完整的数组。

输出格式
输出一个整数,表示最大利润。

数据范围
1≤�≤1051≤N≤10​5​​

样例输入

 
  1. 8
  2. 3 3 5 0 0 3 1 4

样例输出

 
  1. 6
#include<cmath>
#include<cstdio>
#include<queue>
#include<string>
#include<cstring>
#include<iomanip>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int a[N],dp[N][3][3],n;
int main() {cin>>n;for(int i=1;i<=n;i++){cin>>a[i];} memset(dp,-0x3f,sizeof(dp));for(int i=0;i<=n;i++){dp[i][0][0]=0;}for(int i=1;i<=n;i++){for(int j=1;j<=2;j++ ){dp[i][j][0]=max(dp[i-1][j][0],dp[i-1][j][1]+a[i]);dp[i][j][1]=max(dp[i-1][j][1],dp[i-1][j-1][0]-a[i]);}}int  maxx;maxx=max(dp[n][1][0],dp[n][2][0]);cout<<maxx;return 0;
}

这篇关于股票买卖III的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1021575

相关文章

HDU 2064 汉诺塔III(水题)

题目: http://acm.hdu.edu.cn/showproblem.php?pid=2064 题目大意: 有三根杆,求把n个圆盘从左边移到右边,最少需要移动圆盘的次数。移动规则为大盘不能放在小盘上,比原始的汉诺塔题改变的地方是,只能通过中间的杆往左右两边的杆移动。 心得: 此题心得在题外,不在题内,初看此题,尼玛吓了一跳,好像很难的样子,手贱百度了一下,只注意到俩字“水题”,赶紧

推荐适合中秋的SVG模版(第III期)

宝藏模版 往期推荐(点击阅读): 趣味效果|高大上|可爱风|年终总结I|年终总结II|循环特效|情人节I|情人节II|妇女节|儿童节I|儿童节II|儿童节III|618I|618II|父亲节|丝滑动画|端午节I|端午节II|滑动妙用|图片轮播I|图片轮播II|又红又专|中秋节I|中秋节II|双十一I|双十一II|世界杯|圣诞节|新年|兔年春节|元宵节|愚人节|杂志范儿|520/521I|520

day-47 最大连续1的个数 III

思路 滑动窗口:如果用left和right表示连续1的左右边界,那么意味着可以把0修改为1的次数为k次 解题过程 用一个变量num记录left和right之间0的个数,当num<=k时,right++,num>k时,将left向右移动,直到不再满足num>k Code class Solution {public int longestOnes(int[] nums, int k) {in

[M滑动窗口] lc1004. 最大连续1的个数 III(滑动窗口+模板题)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接:1004. 最大连续1的个数 III 题单: 滑动窗口(定长/不定长/多指针) 二、不定长滑动窗口 §2.1 求最长/最大 2. 题目解析 思路: 比较直接的滑动窗口哈,好像也没什么需要注意的点。 前缀和+二分 也不是不能做。官解也提到了这个点。但对于本题来讲,看到就是滑窗,没毛病吧。 时间复

力扣2402.会议室 III

力扣2402.会议室 III 双堆模拟 一个堆存未占用的会议室编号一个堆存已占用的结束时间和编号 class Solution {public:int mostBooked(int n, vector<vector<int>>& meetings) {int cnt[n];memset(cnt,0,sizeof(cnt));priority_queue<int,vector<int>,g

Leetcode Day18 股票买卖专题

买卖股票重要的部分就是状态转移, 通常是二维i,0/1代表第i天持有/不持有股票时的最大利润 Part 1: 不限制交易次数 122 每天都可买入卖出 class Solution:def maxProfit(self, prices: List[int]) -> int:# on day i, we have stockdp1 = [0] * len(prices)# on day i,

【dp力扣】买卖股票的最佳时机III

目录 审题 通过动态规划固定套路思考: 1、定义状态表示(关键) 2、推导状态转移方程(重点) 对于buy(可买入股票): 回顾状态表示: 第一种情况: 第二种情况: 联立两种情况(取两种情况的最大值):​ 对于own(持有股票) 回顾状态表示: 第一种情况: 第二种情况: (最终结果)联立两种情况(还是取max): 3、初始化特殊数据(重点) 第0天交易0次:

回溯——2.组合总和III

力扣题目链接 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。 说明: 所有数字都是正整数。解集不能包含重复的组合。 示例 1: 输入: k = 3, n = 7 输出: [[1,2,4]] 示例 2: 输入: k = 3, n = 9 输出: [[1,2,6], [1,3,5], [2,3,4]] 解题思路

P10878 [JRKSJ R9] 在相思树下 III 题解

Description 给定一个长为 n n n 的序列 a 1 … n a_{1\dots n} a1…n​,需要对它进行两种操作共 n − 1 n-1 n−1 次。 对一个长度为 l l l 的序列 b 1 … l b_{1\dots l} b1…l​ 进行一次操作将会把序列变为一个长为 l − 1 l-1 l−1 的序列 c 1 … l − 1 c_{1\dots l-1}

代码随想录训练营 Day41打卡 动态规划 part08 121. 买卖股票的最佳时机 122. 买卖股票的最佳时机II 123. 买卖股票的最佳时机III

代码随想录训练营 Day41打卡 动态规划 part08 一、力扣121. 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0