POJ - 1163トライアングル[動的計画]

私は、題し

  トライアングル

第二に、分析

  動的なプログラミングの問題入門。

  状態遷移方程式$$ DP [I] [j]は[I] [J] + MAX(DP [I-1] [j]は、DP [I] [j]を)= $$

三、ACコード

1の#include <cstdioを>
 2の#include <CStringの>
 3の#include <iostreamの>
 4の#include <アルゴリズム>
 5の#include <ベクトル>
 6の#include <cmath>
 7  
8  使用して 名前空間STDを、
9  の#defineっ長い長い
 10  の#define MIN(A、B)((A)>(B)?(B):( A))
 11  の#define MAX(A、B)((A)>(B)? (A):( B))
 12  CONST  INT MAXN = 100 13  INT A [MAXN + 13 ] [MAXN + 13 ]。
14  INTANS [ 2 ] [MAXN + 13 ]。
15  
16  のint main()の
 17  {
 18      INT N。
19      一方(scanf関数(" %のD "、&​​N)=!EOF){
 20          のmemset(A、0はsizeof (A))。
21          のmemset(ANS、0はsizeof (ANS))。
22          のためには、int型 I = 1 ; = iが<Nを; iは++ ){
 23              のためのint型 J = 1 ; J <= I; J ++){
 24                  のscanf(" %dの"、&A [i]は[J])。
25              }
 26          }
 27          のためのint型 i = 1 ; iが= Nを<; Iは++ ){
 28              のためにINT J = 1 ; J <= I; J ++ ){
 29                  アンス[I&1 ] [j]は= [I] [J] +マックス(ANS [(I- 1)・1 ] [J- 1 ]、回答[(I- 1)・1 ] [J])。
30              }
 31          }
32          INT ANS = 0 33          のためにint型 i = 1 ; iが= Nを<; Iは++ ){
 34の              ANS = MAX(ANS、アンス[N - 1 ] [I])。
35          }
 36          のprintf(" %Dを\ n " 、ANS)。
37      }
 38      リターン 0 39 }

 

おすすめ

転載: www.cnblogs.com/dybala21/p/11416904.html