最高のタイム・ツー・購入・アンド・販売在庫-III

タイトル説明

 

あなたがするアレイ持っていると言う   番目の要素は、日に与えられた株式の価格である  私を

デザインの最大の利益で下さい。あなたによってAT MOST完了することにアルゴリズム  TWO  取引を。(2件の取引の最大)

注意: 
あなたは(あなたが再び購入する前に、すなわち、あなたが株式を売却しなければならない)、同時に複数の取引に従事することはできません。

アイデア:あなたの手で数を仮定し、今お金がゼロです。buy1、それは私はあなたが、(最大購入、借金ので、そのレコードが負であるので、使用)sell1を購入することができます最低価格を1日目に記録された日に1日目から記録されていますその日の私の日は、あなたが販売、多くのお金が最も稼ぐことができる方法。buy2とsell2前提条件が行わ場合は、最初のトランザクションかどうか、ダウン計算に利益との最初の取引をする前に、i日を持っているということですので、あなたは、との最初の契約していますあなたが取引を行った場合の利益は、計算され、そうして、その2倍のトランザクションの最大値です。あなたは私の日前にしている場合、取引しない、とそうbuy1は、実際には同じ、sell1とsell2が同じである変化がないことをbuy2ません。
クラスのソリューション{
 パブリックint型 MAXPROFIT(ベクトル< int型 >&価格){
         IF(prices.size()<= 1 の戻り 0 ;
         int型の buy1 = INT_MIN;
         int型 sell1 = 0 ; // 販売利益初めて
        のint = buy2 INT_MIN;
         INT sell2 = 0 ; // 第二に利益販売、すなわち総利益
        のためにINT I = 0 ;私は<prices.size(); ++ I)
        { 
            buy1= MAX(buy1、 - 価格[I]); 
            sell1 = MAX(sell1、buy1 + 価格[I]); 
            buy2 = MAX(buy2、sell1- 価格[I]); 
            sell2 = MAX(sell2、buy2 + 価格[I]); 
        } 
        戻りsell2。
    } 
}。

 

おすすめ

転載: www.cnblogs.com/lijingblog/p/11025429.html