View Code
1 //数塔问题 2 //求数塔最大的和 3 /* 4 5 9 6 12 15 7 10 6 8 8 2 18 19 5 9 19 7 10 4 16 10 */ 11 #include<stdio.h> 12 int main() 13 { 14 int a[100][100],i,j,b,c; 15 int n; 16 while(scanf("%d",&n),n!=0) 17 { 18 for(i=0;i<n;i++) 19 { 20 for(j=0;j<=i;j++) 21 scanf("%d",&a[i][j]); 22 } 23 for(i=n-2;i>=0;i--)//从倒数第二层开始加 24 { 25 for(j=0;j<=i;j++) 26 { 27 b=a[i][j]+a[i+1][j];//将第i行j列的数与i+1行j列的数相加 28 c=a[i][j]+a[i+1][j+1];//将第i行j列的数与第i+1行j+1列的数相加 29 if(b>c)//选择和比较大的数,然后将比较大的那个和,赋值给a[i][j]; 30 a[i][j]=b; 31 else 32 a[i][j]=c; 33 34 35 } 36 } 37 printf("%d\n",a[0][0]);//最后输出a[0][0]即为最大数和 38 } 39 return 0; 40 } 41
求出数塔最大的和