洛谷 P1387 最大正方形
在一个 n*m 的只包含 0 和 1 的矩阵里找出一个不包含 0 的最大正方形,输出边长。
#include<iostream> #include<algorithm> using namespace std; int a[103][103]; int b[103][103]; int main() { int n,m; cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>a[i][j]; b[i][j]=b[i-1][j]+b[i][j-1]-b[i-1][j-1]+a[i][j]; } } int ans=1; int l=2; while(l<min(n,m)) { for(int i=l;i<=n;i++) { for(int j=l;j<=m;j++) { if(b[i][j]-b[i-l][j]-b[i][j-l]+b[i-l][j-l]==l*l)//求子矩阵之和 ans=max(ans,l); } } l++; } cout<<ans<<endl; return 0; }
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号