#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#define inf 0x3f3f3f3f;
#define maxn 110
using namespace std;
int dp[maxn][maxn];
int ma[maxn][maxn];
int n,m;
void DP(int c)
{
for(int i=1;i<=n;i++)
{
int temp=dp[i][c-1]+ma[i][c];
dp[i][c]=max(dp[i][c],temp);
for(int j=i+1;j<=n;j++)
{
temp+=ma[j][c];
dp[j][c]=max(dp[j][c],temp);
}
}
for(int i=n;i>=1;i--)
{
int temp=dp[i][c-1]+ma[i][c];
dp[i][c]=max(dp[i][c],temp);
for(int j=i-1;j>=1;j--)
{
temp+=ma[j][c];
dp[j][c]=max(dp[j][c],temp);
}
}
}
int main()
{
int t;cin>>t;
int c=1;
while(t--)
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
scanf("%d",&ma[i][j]);
dp[i][j]=-inf;
}
dp[1][1]=ma[1][1];
for(int i=2;i<=n;i++)
dp[i][1]=dp[i-1][1]+ma[i][1];
for(int j=2;j<=m;j++)
DP(j);
printf("Case #%d:\n",c++);
printf("%d\n",dp[1][m]);
}
return 0;
}
百度之星 1004 Labyrinth,布布扣,bubuko.com
原文:http://blog.csdn.net/code_or_code/article/details/26022315