[hdu2084]数塔

数字三角形

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstdio>
 4 #include <cstring>
 5 #include <cstdlib>
 6 #include <queue>
 7 #include <string>
 8 #include <vector>
 9 using namespace std;
10 
11 int a[500][500],f[500][500],C,n;
12 
13 int dp(int i,int j){
14     if(f[i][j]!=-1)return f[i][j];
15     if(i==n)return f[i][j]=a[i][j];
16     int x=dp(i+1,j);
17     if(j+1!=-1)x=max(x,dp(i+1,j+1));
18     return f[i][j]=x+a[i][j];
19 }
20 
21 int main(){
22     scanf("%d",&C);
23     while(C--){
24         memset(f,-1,sizeof(f));
25         memset(a,-1,sizeof(a));
26         scanf("%d",&n);
27         for(int i=1;i<=n;i++)
28             for(int j=1;j<=i;j++)
29                 scanf("%d",&a[i][j]);
30         printf("%d\n",dp(1,1));
31     }
32 }
View Code

 

posted @ 2017-02-01 13:50  KingSann  阅读(72)  评论(0编辑  收藏  举报