1.题目
2.输入输出案例
输入样例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 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 =3 。共得利润 4+3 = 7。
样例2:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。注意你不能在第 1 天和第 2天接连购买股票,之后再将它们卖出。因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。
样例3:在这种情况下, 不进行任何交易, 所以最大利润为 0。
3.思路与代码
贪心思路:看相邻的两天,只要后一天价格比前一天高,那么就无脑进行交易一次,最终得到一个全局的最优解
#include <bits/stdc++.h> using namespace std; const int N = 100010; int arr[N]; int main() { int n; long long ans=0; cin>>n; for(int i=0;i<n;i++) scanf("%d",&arr[i]); for(int i=0;i<n-1;i++) if(arr[i+1]>arr[i]) ans+=(arr[i+1]-arr[i]); cout<<ans; return 0; }