簡單的貪心思想:把最大的數添加進來s[i][j]+=max(s[i+1][j],s[i+1][j+1]);
[cpp]
#include<stdio.h>
[cpp]
#define max(a,b) (a)>(b)?(a):(b)
int s[100][100];
int main()
{
int c,n,i,j,b;
scanf("%d",&c);
while(c--)
{
scanf("%d",&n);
i=0;b=n;
while(b--)
{
for(j=0;j<=i;j++)
scanf("%d",&s[i][j]);
i++;
}
for(i=n-2;i>=0;i--)
for(j=0;j<=i;j++)
s[i][j]+=max(s[i+1][j],s[i+1][j+1]);
printf("%d\n",s[0][0]);
}
return 0;
}