对于第一组样例,阿福可以第 1 次在第 1 天买入(价格为 5 ),然后在第 2 天卖出(价格为 14 )。第 2 次在第 3 天买入(价格为 -2 ),然后在第 7 天卖出(价格为 17 )。一共获得的利润是 (14 - 5) + (17 - (-2)) = 28
对于第二组样例,阿福可以第 1 次在第 1 天买入(价格为 6 ),然后在第 2 天卖出(价格为 8 )。第 2 次仍然在第 2 天买入,然后在第 2 天卖出。一共获得的利润是 8 - 6 = 2
对于第三组样例,由于价格一直在下跌,阿福可以随便选择一天买入之后迅速卖出。获得的最大利润为 0

问题相当于:一个数组 i<=j<=k<=l 求a[j]-a[i]+a[l]-a[k]的最大值
思路:以某一个数位节点,求出这个数之前的利润最大值和这个数之后的利润最大值

AC代码:

#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cstdlib>
#include <algorithm>
#include<string.h>
#include<math.h>
#define llu unsigned long long
using namespace std;int a[100010],dp1[100010],dp2[100010],maxx[100010],minn[100010];
//dp1数组用来存第一次卖出能赚的钱,dp2存第二次卖出赚的钱
int main()
{int T;cin >> T ;while(T--){int n;cin >> n;//long long a[n],dp1[n],dp2[n],maxx[n],minn[n];for(int i=0;i<n;i++){scanf("%d",&a[i]);//cin >> a[i] ;//cout << "yyy" << endl ;}//找此位置前的最低价格 minn[0]=a[0];dp1[0]=0;for(int i=1;i<n;i++){minn[i]=min(minn[i-1],a[i]);dp1[i]=max(dp1[i-1],a[i]-minn[i]);//求出以这个数为节点的第一次卖出的最大利润 }//找此位置后的最高价格 maxx[n-1]=a[n-1];dp2[n-1]=0;for(int i=n-2;i>=0;i--){maxx[i]=max(maxx[i+1],a[i]);dp2[i]=max(dp2[i+1],maxx[i]-a[i]);//求出以这个数为节点的第二次卖出的最大利润}int ans=0;for(int i=0;i<n;i++){ans=max(ans,dp1[i]+dp2[i]);}//cout << ans << endl ;printf("%d\n",ans);}return 0;
}

股票买卖(C/C++)相关推荐

  1. 【leetcode】股票买卖系列总结

    股票买卖系列总结 股票买卖系列的题目在面试中还是比较经典的,这里对这一系列做一些简单的总结. 1. 只允许买卖一次 假设股票价格序列为(3, 5, 7, 3, 8, 1) 动态规划.整个过程中的行为选 ...

  2. LeetCode 股票买卖问题

    LeetCode 股票买卖问题 文章目录 LeetCode 股票买卖问题 一.问题描述 **二. 穷举框架** **三. 状态转移框架** **四.解题** `第一题`:`K = 1` `第⼆题`, ...

  3. 算法(24)-股票买卖

    股票买卖 1.动态规划框架 LeetCode-121 一次买卖 LeetCode-122 不限次数 LeetCode-309 不限次数+冷冻期 LeetCode-714 不限次数+手续费 LeetCo ...

  4. 股票买卖(信息学奥赛一本通-T1302)

    [题目描述] 最近越来越多的人都投身股市,阿福也有点心动了.谨记着"股市有风险,入市需谨慎",阿福决定先来研究一下简化版的股票买卖问题. 假设阿福已经准确预测出了某只股票在未来N天 ...

  5. 百练 06 股票买卖

    百练 06 股票买卖 总时间限制: 内存限制: 1000ms 65536kB 描述 最近越来越多的人都投身股市,阿福也有点心动了.谨记着"股市有风险,入市需谨慎",阿福决定先来研究 ...

  6. 【leetcode】【动态规划】股票买卖

    leetcode 股票买卖(动态规划) 这位大佬四种题型总结的很好:link 一共只有三种状态:买.卖.冷冻 buy[i]buy[i]buy[i] 表示第i天之前最后一次行为是buy时,最大的收益 s ...

  7. Bailian4121 股票买卖【最值】

    4121:股票买卖 总时间限制: 1000ms 内存限制: 65536kB 描述 最近越来越多的人都投身股市,阿福也有点心动了.谨记着"股市有风险,入市需谨慎",阿福决定先来研究一 ...

  8. 股票买卖接口如何实现委托下单的功能?

    股票买卖接口如何实现委托下单的功能?一般来说,股票买卖接口都是相关的人士已经设计好,并且是程序形式呈现出来的,和券商系统链接起来,这样就可以实现交易了,下面给分享关于股票买卖接口是如何执行委托下单的代 ...

  9. 股票买卖原理_如何在智能手机上买卖股票

    股票买卖原理 The stock market can be a scary place, especially if you're just getting into trading or inve ...

  10. 股票买卖明细接口是怎样实现查询交易数据的?

    股票买卖明细接口作为软件应用而言,很多资源和数据不一定就是由其自身提供的,所以说某些功能还是需要调用第三方提供的服务,这其中就涉及到API接口的调用.也就是说,股票买卖明细接口是与数据端直接挂钩的,通 ...

最新文章

  1. 选择HttpHandler还是HttpModule?
  2. java Scanner具有神奇的作用可惜大部分java开发人员不知
  3. MySQL中update修改数据与原数据相同会再次执行吗?
  4. 各种模板(数学数论字符串)
  5. python3 安装Crypto 出现的问题
  6. 前端学习(3250):一个简单的文件
  7. php分布式的锁,laravel分布式并发锁
  8. 一文带你读懂Self-Supervised Learning(自监督学习)
  9. python预测数据怎么写_Python代写时间序列选择波动率预测指数收益算法分析案例...
  10. 从IBM和SUN分析当前SOA公司现状
  11. DataGrip连接不上本地localhost数据库解决办法
  12. java 图片压缩100k_Java 图片压缩至指定大小
  13. 12.STC15W408AS单片机比较器
  14. matlab 平行四边形,matlab计算四边形面积
  15. activemq如何保证消息按顺序消费
  16. 直播回顾 | 阿拉丁带你探秘未来文旅新生态
  17. 倒计时不到1天!iPhone 11系列起售价预测,或将成为新的“真香机”
  18. 图像修复之Exemplar-Based Inpainting
  19. ICPC 2019 徐州网络赛
  20. 中科蓝讯AB536X系列芯片PWM使用说明

热门文章

  1. Caleb Pike索尼A7 III视频指南DSLR视频拍摄教程 中文字幕 Sony A7 III Video Guide
  2. 从能力者变身赋能者 用友YonBuilder开启“人人都是开发者”新时代
  3. jenkins pipeline Extended Choice Parameter
  4. 爬虫实战:爬取京东手机图片并保存到本地
  5. 科技界需要自己的希波克拉底誓言
  6. 全网最全linux Csa 文件创建,删除的方法,教你五分钟掌握干货
  7. Java编写斗地主游戏
  8. nginx 文件服务器 开源,在开源分布式文件系统MogileFS 中使用 Nginx
  9. 数学是一门逻辑性极强的演绎科学,只有对基本概念深入理解,对基本定理和公式牢牢记住,才能找到解题的突破口和切入点。
  10. KdPrint使用方法