qzh是二维前缀和数组
#include <bits/stdc++.h>
using namespace std;
int n,m,r,s;
int a[20][20];
int qzh[20][20];
int h[20],l[20];//行列
int ans=1e8;
int check(){
int cnt=0;
for(int i=1;i<=r;i++){
for(int j=1;j<=s;j++){
cnt=max(qzh[h[i]][l[j]]-qzh[h[i-1]][l[j]]-qzh[h[i]][l[j-1]]+qzh[h[i-1]][l[j-1]],cnt);
}
}
return cnt;
}
void sol(int x,int y,int rr,int ss){
if(rr>r||ss>s)return;
if(rr==r&&ss==s)ans = min(ans,check());
h[rr]=x;l[ss]=y;
sol(x+1,y,rr+1,ss+1);
sol(x,y+1,rr+1,ss+1);
}
int main(){
ios::sync_with_stdio(0);
cin>>n>>m>>r>>s;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
qzh[i][j]=qzh[i-1][j]+qzh[i][j-1]-qzh[i-1][j-1]+a[i][j];
}
}
sol(1,1,0,0);
cout<<ans;
}