描述
这些日子笨蛋一直研究股票,经过调研,终于发现xxx公司股票规律,更可喜的是 笨蛋推算出这家公司每天的股价,为了防止别人发现他的秘密。他决定对于这家公司的 股票最多买一次,现在笨蛋已经将股票价格列了出来。(这已经不是笨蛋的难题了,他已经解决 呵 呵)。只想难为难为你呀,从股票价格表上,你能算出笨蛋的每股股票最多能赚多少钱吗?
- 输入
第一行一个n,表示n天(小于100000)第二行 给出n天每股的价格 - 输出
每股最多赚多少钱 - 样例输入
4
947 267 359 771
7
669 735 322 794 397 565 181 - 样例输出
504
472
分析:
弄懂了这道题,你就离土豪不远了···· 加油
其实提议很简单,就是要你求出在那天买入股票然后在那一天卖出,获得的利润最大。当然了,你必须的保证你在卖出的时候手里是有股票可以卖的。
第一思想是不是就是将当前这一天的股票价格与之前每一天的股票价格做差值,求出差值最大的,没错思路很正确,但是wa的也很爽快,因为n的范围比较大,时间上肯定会超。
所以呢,首先要找出前几天中的股票的最低价格,然后再求出当前这一天与最低价格的差值,其中最大值即为所求。
代码:
#include<string>
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<stack>
using namespace std;
int main()
{
int n;
int a[100009];
while(~scanf("%d",&n))
{
int Min=0x3f3f3f3f;
int Max=-0x3f3f3f3f;
for(int i=0; i<n; i++)
{
scanf("%d",&a[i]);
if(i>=1)
{
Min=min(Min,a[i-1]);
Max=max(Max,a[i]-Min);
}
}
printf("%d
",Max);
}
return 0;
}