#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<iostream>
#include <algorithm>
using namespace std;
int main()
{
int M,N,i,j,data[101][101];
scanf("%d",&M);
while(M--)
{
scanf("%d",&N);
for(i=1;i<=N;i++)
{
for(j=1;j<=i;j++)
{
scanf("%d",&data[i][j]);
}
}//录入数塔数据
for(i=N;i>1;i--)//把i定位到数塔底层,从下到上计算
{
for(j=1;j<i;j++)
{
if(data[i][j]>data[i][j+1])data[i-1][j]=data[i-1][j]+data[i][j];
else data[i-1][j]=data[i-1][j]+data[i][j+1];
}
}
printf("%d\n",data[1][1]);
}
return 0;
}
总结
1.数塔从上往下分析,从下往上计算
2.每次scanf数组元素我老是忘记加&,不过我也有经验了,程序一卡住不前,我就下意识看scanf,果然是这个问题,所以这次排错很快,一下就过了