时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述
这些日子笨蛋一直研究股票,经过调研,终于发现xxx公司股票规律,更可喜的是 笨蛋推算出这家公司每天的股价,为了防止别人发现他的秘密。他决定对于这家公司的 股票最多买一次,现在笨蛋已经将股票价格列了出来。(这已经不是笨蛋的难题了,他已经解决 呵 呵)。只想难为难为你呀,从股票价格表上,你能算出笨蛋的每股股票最多能赚多少钱吗?
输入第一行一个n,表示n天(小于100000) 第二行 给出n天每股的价格输出每股最多赚多少钱样例输入
4
947 267 359 771
7
669 735 322 794 397 565 181
样例输出
504
472
代码:简单题。。。。数组开到十万,考虑动态规划来求解.....
1 #include<stdio.h>
2 #include<stdlib.h>
3 #define maxn 100000
4
5 int str[maxn+2];
6 int main()
7 {
8 int n,i,record,pos,ma,start;
9 while(scanf("%d",&n)!=EOF)
10 {
11 for(i=0;i<n;i++)
12 {
13 scanf("%d",&str[i]);
14 }
15 start=pos=1;
16 record=-99999999;
17 while(n-start>0)
18 {
19 ma=str[start];
20 for(i=start;i<n;i++)
21 {
22 /*搜寻段的最大值*/
23 if(ma<=str[i])
24 {
25 ma=str[i];
26 pos=i;
27 }
28 }
29 for(i=start-1;i<pos;i++)
30 {
31 if(record<(str[pos]-str[i]))
32 record=(str[pos]-str[i]);
33 }
34 start=pos+1;
35 }
36 printf("%d\n",record);
37 }
38 return 0;
39 }