hdu2084数塔

愉快的刷水题!!!

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int maxn = 110;
int n, c, data[maxn][maxn], dp[maxn][maxn];
inline int qread(){
    register int ch = getchar(), x = 0, flag = 0;
    while(ch < '0' || ch > '9')    {if(ch == '-')    flag = 1;    ch = getchar();}
    while(ch >= '0' && ch <= '9')    x = 10 * x + ch - 48, ch = getchar();
    return flag ? -x : x;
}
int main(void){
    c = qread();
    while(c--){
        n = qread();
        memset(dp, 0, sizeof(dp));
        for(int i = 1; i <= n; ++i)
            for(int j = 1; j <= i; ++j)
                data[i][j] = qread();
        for(int i = n; 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]);                
    }
}

 

---恢复内容结束---

posted @ 2018-08-21 08:30  junk_yao  阅读(80)  评论(0编辑  收藏  举报