最大値は、オファー顔の質問47-ギフト勝 - 動的計画を

/ * 
タイトル:
	チェス盤Mを考える* nは、各セルは、ギフト(各ギフトに0より大きい値)、置く
	左上隅から開始し、右コーナに達するダウンまたはすぐを下げ、そして得られたプレゼント最大。
* / 
/ * 
アイデア:
	F(I、J)=最大[F(1-I、J。)、F(I、J-1)] + A [I、J] 
* / 
の#include <iostreamの> 
する#include < CString> 
の#include <ベクトル> 
の#include <アルゴリズム> 


名前空間STDを使用して、


INT getMaxValue(値CONST INT *、INT列、int型のCOLS){ 
    IF(行<COLS = 0 || <= 0)戻り0; 
    INT * maxValues =新しい新しいINT [COLS]; 
    maxValues [0] =値[0]; 

    (。; COL <COLS; INT COL = 1 COL ++)用{ 
        maxValues [COL] = maxValues [COL- 1] +値[COL]; 
    } 

    ため(INT列= 1、行<行、行++){
        {(COL ++; COL <COLS INT COL = 0)のための
            (COL == 0){もし
                maxValues [0] = maxValues [0] +値[行* colsの+ COL]。
            }他{ 
                maxValues [COL] = MAX(maxValues [COL-1]、maxValues [COL])+値[行* colsの+ COL]。
            } 
        } 
    } 
    戻りmaxValues [COLS - 1]。
} 


int型のmain(){ 
    int型の値[] = {1,10,3,8,12,2,9,6,5,7,4,11,3,7,16,5}。
    COUT << getMaxValue(値4,4)。
    0を返します。
}

   

おすすめ

転載: www.cnblogs.com/buaaZhhx/p/12050968.html