最大子矩阵
1 #include<stdio.h> 2 #include<string.h> 3 #define MAX(x,y)(x>y?x:y) 4 const int MAXN=1010; 5 int m,n,x,y,ans; 6 int map[MAXN][MAXN]; 7 void getline(int *a){ 8 for(int i=1;i+y<=n;i++){ 9 int temp=0; 10 for(int j=i,t=1;t<=y;j++,t++){ 11 temp+=a[j]; 12 } 13 ans=MAX(ans,temp); 14 } 15 } 16 int main(){ 17 int T; 18 scanf("%d",&T); 19 while(T--){ 20 scanf("%d%d%d%d",&m,&n,&x,&y); 21 ans=0; 22 for(int i=1;i<=m;i++){ 23 for(int j=1;j<=n;j++) 24 scanf("%d",&map[i][j]); 25 } 26 for(int i=1;i+x<=m;i++){ 27 for(int j=i+1,t=1;t<x;j++,t++){ 28 for(int k=1;k<=n;k++) 29 map[i][k]+=map[j][k]; 30 } 31 getline(map[i]); 32 } 33 printf("%d\n",ans); 34 } 35 return 0; 36 }
原文:http://www.cnblogs.com/handsomecui/p/4885073.html