数塔

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

#include <map>
#include <cstdio>
#include <stack>
#include <cmath>
#include <queue>
#include <string>
#include <queue>
#include <cstring>
#include <iostream>
#include <algorithm>

#define lid id<<1
#define rid id<<1|1
#define closein cin.tie(0)
#define scac(a) scanf("%c",&a)
#define scad(a) scanf("%d",&a)
#define print(a) printf("%d\n",a)
#define scald(a) scanf("%lld",&a)
#define debug printf("hello world")
#define form(i,n,m) for(int i=n;i<m;i++)
#define mfor(i,n,m) for(int i=n;i>m;i--)
#define nfor(i,n,m) for(int i=n;i>=m;i--)
#define forn(i,n,m) for(int i=n;i<=m;i++)
#define scadd(a,b) scanf("%d%d",&a,&b)
#define memset0(a) memset(a,0,sizeof(a))
#define scaldd(a,b) scanf("%lld%lld",&a,&b)
#define scaddd(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define scadddd(a,b,c,d) scanf("%d%d%d%d",&a,&b,&c,&d)

#define INF 0x3f3f3f3f
#define maxn 50000
#define mod 1000000007
typedef long long ll;
using namespace std;
//---------AC(^-^)AC---------\\

int num[105][105],dp[105][105];
int main()
{
    int t;
    scad(t);
    while(t--)
    {
        memset(dp,0,sizeof(dp));
        int n;
        scad(n);
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=i;j++)   scad(num[i][j]);
        }
        int ans=0;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=i;j++)
            {
                if(j-1>0) dp[i][j]=max(dp[i-1][j-1]+num[i][j],dp[i-1][j]+num[i][j]);
                else dp[i][j]=dp[i-1][j]+num[i][j];
                ans=max(dp[i][j],ans);
            }
        }
        print(ans);
    }
    return 0;
}
View Code

 

posted @ 2019-03-26 00:22  mile-star  阅读(114)  评论(0编辑  收藏  举报