此题卡了一些时间!但是最后还是ac了,其实也简单。。不多说看代码。。。
#include<stdio.h> #include<string.h> #include <algorithm> #define N 510 using namespace std; int f[N][N],ping[N][N],jing[N][N]; int main () { int T,n,m,i,j; while(scanf("%d",&T)!=EOF) { for(int ca=1;ca<=T;ca++) { scanf(" %d%d",&n,&m); for(i=1;i<=n;i++) for(j=1;j<=m;j++) { scanf("%d",&jing[i][j]); jing[i][j]+=jing[i][j-1]; } for(i=1;i<=n;i++) for(j=1;j<=m;j++) { scanf("%d",&ping[i][j]); ping[i][j]+=ping[i-1][j]; } int max1=0; for(i=1;i<=n;i++) for(j=1;j<=m;j++) { f[i][j]=max(jing[i][j]+f[i-1][j],ping[i][j]+f[i][j-1]); if(f[i][j]>max1)max1=f[i][j]; } printf("Case %d: %d ",ca,max1); } } }