解题思路:数塔问题。从倒数第二行开始求当前行对应位置与下一行对应位置的两个数最大值之和,一直到第一行,则第一个就是所求数据。
参考代码:
#include <stdio.h> #include <math.h> int max(int x,int y) { if(x>y) return x; else return y; } int main() { int a[100][100]={0}; int i,j,n,count,k; scanf("%d",&count);//测试次数 for(k=1;k<=count;k++) { scanf("%d",&n); //行数 for(i=0;i<n;i++) for(j=0;j<=i;j++) scanf("%d",&a[i][j]); for(i=n-2;i>=0;i--) for(j=0;j<=i;j++) a[i][j]+=max(a[i+1][j],a[i+1][j+1]); printf("%d\n",a[0][0]); } return 0; }
0.0分
2 人评分