POJ 1163 The Triangle

經典的DP題目,自下而上進行,狀態轉移方程爲
dp[i][j] = max(dp[i+1][j],dp[i+1][j+1])+data[i][j];

#include <iostream>
#include <cstdio>
using namespace std;

#define MAXN 110

int main(){
    int n;
    int data[MAXN][MAXN]={0};
    int dp[MAXN][MAXN]={0};
    scanf("%d",&n);
    for(int i=1;i<=n;++i){
        for(int j=1;j<=i;++j){
            scanf("%d",&data[i][j]);
        }
    }
    for(int i=1;i<=n;++i)
        dp[n][i] = data[n][i];
    for(int i=n-1;i>=1;--i){
        for(int j=1;j<=i;++j){
            dp[i][j] = max(dp[i+1][j],dp[i+1][j+1])+data[i][j];
        }
    }
    printf("%d\n",dp[1][1]);
    //system("pause");
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章