水题;(dp)
先全部加起来处理一下,然后相减就是了;
#include <iostream>
using namespace std;
int s[1010][1010];
int main()
{
int T,n,m,x,y;
cin>>T;
while(T--)
{
cin>>m>>n>>x>>y;
memset(s,0,sizeof(s));
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
cin>>s[i][j];
s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1]; //求和
}
int sum(0);
for(int i=x;i<=m;i++)
for(int j=y;j<=n;j++)
sum=max(sum,s[i][j]-s[i-x][j]-s[i][j-y]+s[i-y][j-y]); //循环求最大
cout<<sum<<endl;
}
return 0;
}