HDU_2084_DP

http://acm.hdu.edu.cn/showproblem.php?pid=2084

 

简单dp,从下到上,从左到右,依次更新每个位置最大值。

 

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

int a[105][105],dp[105][105];

int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n;
        scanf("%d",&n);
        for(int i = 1;i <= n;i++)
        {
            for(int j = 1;j <= i;j++)    scanf("%d",&a[i][j]);
        }
        for(int i = 1;i <= n;i++)    dp[n][i] = a[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])+a[i][j];
        }
        printf("%d\n",dp[1][1]);
    }
    return 0;
        
      
}

 

posted @ 2016-09-18 22:09  zzzzzzzzhu  阅读(101)  评论(0编辑  收藏  举报