二位前缀和
2026-02-10 10:05:07
发布于:四川
5阅读
0回复
0点赞
因为数据量很低 其实可以暴力枚举
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
int a[13][13]={};
int x=0;
for (int i=1;i<=n;i++){
for (int j=1;j<=m;j++){
cin>>x;
a[i][j]=a[i-1][j]+a[i][j-1]-a[i-1][j-1]+x;
}
}//求二维前缀和
int mx=0;
for (int x1=1;x1<=n;x1++){
for (int y1=1;y1<=m;y1++){
for (int x2=x1;x2<=n;x2++){
for (int y2=y1;y2<=m;y2++){//四重循环枚举左上角和右下角
if ((x2-x1+1)*(y2-y1+1)==a[x2][y2]-a[x2][y1-1]-a[x1-1][y2]+a[x1-1][y1-1]){
mx=max((x2-x1+1)*(y2-y1+1),mx);
}
}
}
}
}
cout<<mx;
return 0;
}
这里空空如也







有帮助,赞一个