(序列型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;
}

 

posted @ 2020-03-17 10:02  Maxwell·  阅读(207)  评论(0编辑  收藏  举报