如图所示数塔共有5(n)层,算法思想为从第4(n-1)层开始找往下找相邻的两个数中的最大数即a[i][j] += max(a[i+1][j],a[i+1][j+1]);
不断往上叠加即可
#include <stdio.h>
#include <math.h>
int max(int x,int y) {
if(x > y)
return x;
else return y;
}
int main() {
int c,n,a[101][101]={0},i,j;
scanf("%d",&c);
while(c--) {
scanf("%d",&n);
for(i = 1;i <= n;i ++)
for(j = 1;j <= i;j ++) {
scanf("%d",&a[i][j]);
}
i -= 2;
for(;i > 0;i --)
for(j = 1;j <= i;j ++)
a[i][j] += max(a[i+1][j],a[i+1][j+1]);
printf("%d\n",a[1][1]);
}
return 0;
}