(序列型dp)买股票问题
给出一个股票 n 天内每天的价格。
在某天买入后,可在第二天及后任意天卖出,允许买入卖出多次买卖,但只允许一笔交易,买入卖出后才可以再买。
求可以获取的最大利润?
输入样例:
6
7 1 5 3 1 4
输出样例:
7
思路:只有后一天比前一天股价高,那么就值得在前一天买入第二天卖掉,并且可以由局部最优化推到全局最优化
#include<iostream> #include<string.h> #include<math.h> using namespace std; int n,m,v; long ans; int mod=1e9+7; int dp[105],aa[105]; bool vis[105]; int main(){ cin>>n; for(int i=0;i<n;i++){ cin>>aa[i]; } for(int i=0;i<n-1;i++){ if(aa[i+1]>aa[i]){ ans+=(aa[i+1]-aa[i]);//只要后一天比前一天价格高,前一天就可以买 } } cout<<ans; }