很简单的一道dp
#include<iostream>
#include<string.h>using namespace std;
int dp[100][100],a[100][100];
int main()
{
int n,i,j,h;
cin>>n;
while(n--)
{
cin>>h;
memset(dp,0,sizeof(dp));
memset(a,0,sizeof(a));
for(i=0; i<h; ++i)
{
for(j=0; j<=i; ++j)
cin>>a[i][j];
}
for(j=0; j<=h-1; ++j)
dp[h-1][j]=a[h-1][j];
for(i=h-2; i>=0; --i)
{
for(j=0; j<i+1; ++j)
{
dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+a[i][j];
}
}
cout<<dp[0][0]<<endl;
}
return 0;
}