best-time-to-buy-and-sell-stock-iii

来源:互联网 发布:anywhere远程桌面软件 编辑:程序博客网 时间:2024/06/16 06:54

题目:

Say you have an array for which the i th element is the price of a given stock on day i.
Design an algorithm to find the maximum profit. You may complete at most two transactions.
Note:
You may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).

程序:

class Solution {public:    int maxProfit(vector<int> &p) {        if(p.size()==0||p.size()==1)            return 0;        if(p.size()==2)            return max(0,p[1]-p[0]);        int Max=-9999,k;        for(k=0;k<p.size()-1;k++)            Max=max(jisuan(p,0,k)+jisuan(p,k+1,p.size()-1),Max);        Max=max(Max,jisuan(p,0,p.size()-1));        return Max;    }    int jisuan(vector<int> &p,int i,int j)    {        int xl[1000],k,Min=9999,Max=-9999;        for(k=i;k<=j;k++)        {            Min=min(Min,p[k]);            xl[k]=Min;        }        for(k=i;k<=j;k++)            Max=max(Max,p[k]-xl[k]);        return Max;    }};
原创粉丝点击