题目链接:http://lightoj.com/volume_showproblem.php?problem=1004
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std; const int maxe = ;
const int maxn = ;
const int INF = 0x3f3f3f; int num[maxn*][maxn];
int dp[maxn*][maxn]; int main()
{
// freopen("E:\\acm\\input.txt","r",stdin);
int T;
cin>>T;
for(int t=;t<=T;t++){
int N;
cin>>N;
for(int i=;i<=N;i++)
for(int j=;j<=i;j++)
cin>>num[i][j]; for(int i=N+;i<=*N-;i++)
for(int j=i-N+;j<=N;j++)
cin>>num[i][j];
memset(dp,,sizeof(dp));
dp[N*-][N] = num[N*-][N];
for(int i=*N-;i>=N;i--)
for(int j=i-N+;j<=N;j++)
dp[i][j] = num[i][j] + max(dp[i+][j],dp[i+][j+]); for(int i=N-;i>=;i--)
for(int j=;j<=i;j++)
dp[i][j] = num[i][j] + max(dp[i+][j],dp[i+][j+]);
printf("Case %d: %d\n",t,dp[][]);
}
}