#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 105;
int n;
int d[maxn][maxn];
void dp()
{
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= i; j++) {
if(j==1) d[i][j] = d[i][j] + d[i-1][j];
else if(i==j && i!=1) d[i][j] = d[i][j] + d[i-1][j-1];
else {
d[i][j] = d[i][j] + max(d[i-1][j], d[i-1][j-1]);
}
}
}
int ans = -1;
for(int i = 1; i <= n; i++) {
ans = max(ans, d[n][i]);
}
printf("%d\n", ans);
}
int main()
{
int T;
scanf("%d", &T);
while(T--) {
scanf("%d", &n);
memset(d, 0, sizeof(d));
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= i; j++) {
scanf("%d", &d[i][j]);
}
}
dp();
}
return 0;
}
HDU2084 数塔
最新推荐文章于 2021-03-14 19:01:02 发布