HDU 2084 数塔

题目地址:点击打开链接

思路:经典DP吧

AC代码:

#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

int dp[101][101],a[101][101];

int main()
{
    int t,n,i,j;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        memset(dp,0,sizeof(dp));
        for(i=1; i<=n; i++)
        {
            for(j=1; j<=i; j++)
            {
                scanf("%d",&a[i][j]);
            }
        }
        for(i=1; i<=n; i++)
        {
            dp[n][i] = a[n][i];
        }
        for(i=n-1; i>=1; i--)
        {
            for(j=1; j<=i; j++)
            {
                dp[i][j] = a[i][j] +  max(dp[i+1][j],dp[i+1][j+1]);
            }
        }
        printf("%d\n",dp[1][1]);
    }
    return 0;
}


你可能感兴趣的:(HDU 2084 数塔)