直接贴代码:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<queue>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fod(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
const int MAXN=1e3+10;
int map[MAXN][MAXN],sum[MAXN][MAXN],n,m,r,c;
int main(){
scanf("%d%d%d%d",&n,&m,&r,&c);
fo(i,1,n){
fo(j,1,m){
scanf("%d",&map[i][j]);
sum[i][j]=map[i][j]+sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1];
}
}
fo(i,1,n){
fo(j,1,m){
printf("%d ",sum[i][j]);
}
printf("\n");
}
return 0;
}
/*
#include<cstdio>
#include<iostream>
using namespace std;
int num[1500][1500],sum[1500][1500];
int main()
{
int n,m,r,c;
scanf("%d%d%d%d",&n,&m,&r,&c);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
scanf("%d",&num[i][j]);
sum[i][j]=sum[i-1][j]+sum[i][j-1]+num[i][j]-sum[i-1][j-1];
}
int maxn=0;
for(int i=r;i<=n;i++)
{
for(int j=c;j<=m;j++)
{
maxn=max(maxn,sum[i][j]-sum[i][j-c]-sum[i-r][j]+sum[i-r][j-c]);
}
}
printf("%d",maxn);
return 0;
}*/