题目描述
给定一个长度为 N 的数组,数组中的第 i 个数字表示一个给定股票在第 i天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
输入格式
第一行包含整数 N,表示数组长度。
第二行包含 N个不大于 10000的正整数,表示完整的数组。
输出格式
输出一个整数,表示最大利润。
数据范围
1≤N≤105
样例
输入样例1:
6
7 1 5 3 6 4
输出样例1:
7
----------
输入样例2:
5
1 2 3 4 5
输出样例2:
4
----------
输入样例3:
5
7 6 4 3 1
输出样例3:
0
贪心:
跨度买卖,相当于连续跨度一个买卖,
1 2 3 4 5,
1买5卖相当于1买2卖2买3卖3买4卖4买5卖
,只要碰到后面的比前面的贵,一定要前买后卖,
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;
int main(int argc, char** argv) {
int n;
scanf("%d",&n);
int a[10005];
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
int res=0;
for(int i=1;i<n;i++){
if(a[i]<a[i+1]){
res+=a[i+1]-a[i];
}
}
printf("%d",res);
return 0;
}