#include<stdio.h> int a[100][100]; int n,T; int maxsum(int i,int j){ if(i==n) //边界条件,当抵达最后一行 return a[i][j]; //递归 int a1=maxsum(i+1,j); int b1=maxsum(i+1,j+1); if(a1>b1) return a1+a[i][j]; //返回下一层最大值 else return b1+a[i][j]; } int main(){ scanf("%d",&T); while(T--){ scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) scanf("%d",&a[i][j]); printf("%d\n",maxsum(1,1)) ; } } |
Double click to view unformatted code.