fork(2) download
  1. #include <stdio.h>
  2.  
  3. int n, a[100][100], cache[100][100];
  4.  
  5. int maxFromTop(int i, int j) {
  6. if(i>n)
  7. return 0;
  8. if(cache[i][j]!=-1)
  9. return cache[i][j];
  10. int path1 = maxFromTop(i+1, j+1);
  11. int path2 = maxFromTop(i+1, j);
  12. int max = (path1>path2?path1:path2);
  13. cache[i][j] = a[i][j]+max;
  14. return a[i][j]+max;
  15. }
  16.  
  17. int main(void) {
  18. int t, i, j;
  19. scanf("%d", &t);
  20. while(t--) {
  21. scanf("%d", &n);
  22. for(i=0; i<100; i++)
  23. for(j=0; j<100; j++)
  24. cache[i][j] = -1;
  25. for(i=0; i<n; i++)
  26. for(j=0; j<=i; j++)
  27. scanf("%d", &a[i][j]);
  28. printf("%d\n", maxFromTop(0, 0));
  29. }
  30. return 0;
  31. }
Success #stdin #stdout 0s 3376KB
stdin
3
3
1
2 1
1 2 3
4 
1 
1 2 
4 1 2
2 3 1 1 
3
1
2 1
1 2 3
stdout
5
9
8