矩阵前缀和 codevs 1373

直接贴代码:

#include
#include
#include
#include
#include
#include
#include
#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
#include
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;

}*/

你可能感兴趣的:(前缀和)