/ * タイトル: チェス盤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を返します。 }