#include<iostream> #include<string> #include<stdlib.h> using namespace std; int s[101][101]; int d[101][101]; int max(int x,int y){ if(x>y) return x; return y; } int dp(int q,int t,int r){ if(q==r||t==r) return 0; if(d[q][t]>=0) return d[q][t]; d[q][t]=s[q][t]+max(dp(q+1,t,r),dp(q+1,t+1,r)); return d[q][t]; } void main(){ int n; s[0][1]=0; while(cin>>n){ while(n--){ int m; cin>>m; memset(d,-1,sizeof(d)); for(int i=0;i<m;++i){ for(int j=0;j<=i;++j){ cin>>s[i][j]; } } int sum=dp(0,0,m); cout<<sum<<endl; } } }
杭电ACM 第2084题
最新推荐文章于 2021-04-18 23:14:19 发布