从倒数第二层向上推
方程:t[i][j]=max(t[i+1][j],t[i+1][j+1])+t[i][j]
t[0][0]就是答案了
#include <iostream>
#include <cstdio>
#include <memory.h>
using namespace std;
const int maxn=101;
int tower[maxn][maxn],n;
int main(){
int t;
scanf("%d",&t);
while (t--){
scanf("%d",&n);
for (int i=0;i<n;++i){
for (int j=0;j<=i;++j){
scanf("%d",&tower[i][j]);
}
}
for (int i=n-1;i>=0;--i){
for (int j=0;j<=i;++j){
tower[i][j]+=max(tower[i+1][j],tower[i+1][j+1]);
}
}
printf("%d\n",tower[0][0]);
}
return 0;
}