题解 P1387 【最大正方形】
Panthera_AFO · · 题解
这道题可谓DP经典,只是我看楼上几个题解都不太详细,在此给一个证明吧(或者说详细讲解?)
希望不要说窝算法重复
这张图用画图画了半天,将就着看吧
以下是我的AC代码
#include<cstdio>
#include<iostream>
int const maxn=111;
int f[maxn][maxn],n,m,ans;
int min(int x,int y,int z)
{
return std::min(std::min(x,y),z);
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int a,j=1;j<=m;j++)
scanf("%d",&a),f[i][j]=a?min(f[i-1][j],f[i][j-1],f[i-1][j-1])+a:0,ans=std::max(ans,f[i][j]);
printf("%d",ans);
return 0;
}