这题叫DP么?
以下是我的代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
const int kMaxn (1007);
int d[kMaxn][kMaxn];
int main()
{
/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
//*/
int T;
cin>>T;
while(T--)
{
int m,n,x,y;
cin>>m>>n>>x>>y;
memset(d,0,kMaxn*kMaxn*sizeof(int));
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
int t;
cin>>t;
d[i][j]=d[i-1][j]+d[i][j-1]-d[i-1][j-1]+t;
}
/*
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
cout<<d[i][j]<<" ";
cout<<endl;
}
cout<<endl;
//*/
int ans(0);
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
if(i>=x && j>=y)
ans=max(ans,d[i][j]-d[i-x][j]-d[i][j-y]+d[i-x][j-y]);
if(i>=y && j>=x)
ans=max(ans,d[i][j]-d[i-y][j]-d[i][j-x]+d[i-y][j-x]);
}
cout<<ans<<endl;
}
return 0;
}
posted on 2011-03-07 20:54
lee1r 阅读(409)
评论(0) 编辑 收藏 引用 所属分类:
题目分类:递推/递归