最大正方形
0是可以计入面积的,求最大正方形的面积
样例输入
4 5
0 0 1 0 0
1 0 0 0 0
0 0 0 1 0
0 0 0 1 0
样例输出
4
p[i][j]记录以i,j为右下角加上这里能找的的最大的正方形
p[i][j]=min(p[i-1][j],min(p[i-1][j-1],p[i][j-1])+1;
min是找之前的,+1是因为,以它为右下角正好能再加一
#include <iostream>#include <cstdio>using namespace std;int a[1401][1401],n,m,f[1401][1401],ans;int main(){ cin>>n>>m; for (int i=1;i<=n;++i) { for (int j=1;j<=m;++j) { scanf("%d",&a[i][j]); if (a[i][j]==0) f[i][j]=min(min(f[i][j-1],f[i-1][j]),f[i-1][j-1])+1; ans=max(ans,f[i][j]); } } cout<<ans*ans;}

浙公网安备 33010602011771号