动态规划dp
#include<iostream>
#include<math.h>
#include<string.h>
#include<string>
using namespace std;
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int a[105][105],n,ans,t;
while(cin>>t)
{
while(t--)
{
cin>>n;
for(int i=0;i<n;i++)
{
for(int j=0;j<=i;j++)
cin>>a[i][j];
}
//cout<<"ok"<<endl;
for(int i=1;i<n;i++)
{
a[i][0]+=a[i-1][0];
a[i][i]+=a[i-1][i-1];
for(int j=1;j<i;j++)
{
a[i][j]+=max(a[i-1][j-1],a[i-1][j]);
}
}
ans=a[n-1][0];
for(int i=1;i<n;i++)
{
if(ans<a[n-1][i])
ans=a[n-1][i];
}
cout<<ans<<endl;
}
}
return 0;
}