首页 > 试题广场 >

低买高卖

[编程题]低买高卖
  • 热度指数:710 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}你已完全掌握未来 n 天某支股票的收盘价,其中第 i 天的股价为 p_i 。每天你至多操作一次,且每次仅能买入或卖出 1 股,或选择什么也不做。初始时你手中没有股票,也无法做空;第 n 天收盘时,你必须再次清空手中的股票。
\hspace{15pt}请设计出一套买卖计划,使得最终获得的收益最大,并输出该最大收益。

输入描述:
\hspace{15pt}第一行输入一个整数 n\left(2 \leqq n \leqq 3 \times 10^5\right) ,表示预测的天数。
\hspace{15pt}第二行输入 n 个整数 p_1, p_2, \dots, p_n\left(1 \leqq p_i \leqq 10^6\right) ,表示某支股票i的收盘价。


输出描述:
\hspace{15pt}输出一个整数,表示在最优买卖策略下,第 n 天结束时可以获得的最大收益。
示例1

输入

9
10 5 4 7 9 12 6 2 10

输出

20

说明

\hspace{15pt}一种可行且最优的操作方式如下:
\hspace{23pt}\bullet\,2 天股价为 5 时买入 1 股;
\hspace{23pt}\bullet\,3 天股价为 4 时买入 1 股;
\hspace{23pt}\bullet\,5 天股价为 9 时卖出 1 股;
\hspace{23pt}\bullet\,6 天股价为 12 时卖出 1 股;
\hspace{23pt}\bullet\,8 天股价为 2 时再买入 1 股;
\hspace{23pt}\bullet\,9 天股价为 10 时卖出 1 股。
\hspace{15pt}总收益为 (9-5)+(12-4)+(10-2)=20
头像 bandiaoz
发表于 2025-08-08 22:16:44
题目链接 BISHI51 低买高卖 题目描述 给定预测的天数 和股票第 天的收盘价 ,每天最多可操作一次,每次可以买入或卖出一股,或不操作。初始时无持仓,且不能做空;第 天收盘时必须清空所有持仓。请设计买卖策略,使得最终获得收益最大,并输出该最大收益。 解题思路 我们使用“反悔贪心”策略: 展开全文
头像 lahm66
发表于 2025-10-12 10:24:07
参考:https://blog.nowcoder.net/n/94c945090e7e42fbb7b290827ac4e609 import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { pub 展开全文
头像 丨阿伟丨
发表于 2025-09-09 18:05:12
题目链接 https://www.nowcoder.com/practice/61ad3cbe0e7d4db9b64fc2b7b503dfd8 题目描述 给定未来 天的股票价格。每天最多操作一次(买入1股、卖出1股或不操作)。初始时无股票,最终也必须清空股票。求最大收益。 解题思路 这是一个经典的 展开全文