自
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main(){
int c;
cin
>>c;
while(c--){
int N;
cin
>>N;
int array[
105][
105],dp[
105][
105];
int i,j;
for(i=
1;i<=N;i++)
for(j=
1;j<=i;j++)
cin
>>array[i][j];
memset(dp,
0,
sizeof(dp));
// 初始化dp数组,都赋值为0
for(i=
1;i<=N;i++)
dp[N][i]=array[N][i];
// 从最底一层开始可得到的值
for(i=N-
1;i>=
1;i--)
for(j=
1;j<=i;j++)
dp[i][j]=max(dp[i+
1][j],dp[i+
1][j+
1])+array[i][j];
//递推公式,该位置最大值为该下面一层最大的点加上自己的点
cout
<<dp[
1][
1]
<<endl;
}
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-18013.html