解题思路:此题需要从上到下分析,从下到上计算,分别计算最下面和倒数第二层的和,按照此道理向上计算
代码实现:
#include<iostream>
using namespace std;
int main()
{
int ans[200][200];
int m;
cin>>m;
while(m--)
{
int n,i,j;
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
cin>>ans[i][j];
for(i=n-1;i>0;i--)
for(j=1;j<=i;j++)
{
if(ans[i][j]+ans[i+1][j]>ans[i][j]+ans[i+1][j+1])
ans[i][j]=ans[i][j]+ans[i+1][j];
else
ans[i][j]=ans[i][j]+ans[i+1][j+1];
}
cout<<ans[1][1]<<endl;
}
return 0;
}