| 
            
            
             
              【得分57】 #include <stdio.h> #include <stdlib.h>
  int n; int max = 0; int **tree;
  void find(int x, int y, int last) {     if (y > x)         return;     last += tree[x][y];     if (x == n - 1)     {         if (max < last)             max = last;         return;     }     find(x + 1, y, last);     find(x + 1, y + 1, last); }
  int main() {     int i, j;     scanf("%d", &n);     tree = (int **)malloc(n * sizeof(int **));     *tree = (int *)malloc((n + 1) * n / 2 * sizeof(int *));     for (i = 0; i < n; i++)     {         if (i > 0)             tree[i] = tree[i - 1] + i;         for (j = 0; j <= i; j++)             scanf("%d", &tree[i][j]);     }          find(0, 0, 0);     printf("%d\n", max);          free(*tree);     free(tree);     return 0; }              
                       |