• 洛谷1387 最大正方形


    题目描述

    在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长。

    输入输出格式

    输入格式:

    输入文件第一行为两个整数n,m(1<=n,m<=100),接下来n行,每行m个数字,用空格隔开,0或1.

    输出格式:

    一个整数,最大正方形的边长

    输入输出样例

    输入样例#1:

    4 4
    0 1 1 1
    1 1 1 0
    0 1 1 0
    1 1 0 1
    

    输出样例#1:

    2

    解题思路

    动态规划最大图问题 

    动态规划转移方程 f[i,j]:=min(f[i,j-1],f[i-1,j],f[i-1,j-1])+1;

    program BigRectangle;  
    var f:Array[0..100,0..100] of longint;  
        i,j,m,n,ans:Longint;  
    function min(a,b,c:int64):int64;  
    begin  
        if (a<=b) and (a<=c) then exit(a);  
        if (b<=c) and (b<=a) then exit(b);  
        if (c<=a) and (c<=b) then exit(c);  
    end;  
    begin  
            read(n,m);  
            for i:=1 to n do  
                for j:=1 to m do read(f[i,j]);  
            for i:=1 to n do  
                for j:=1 to m do  
                begin  
                    if f[i,j]=1 then  
                    begin  
                        f[i,j]:=min(f[i,j-1],f[i-1,j-1],f[i-1,j])+1;  
                    end;  
                end;  
                for i:=1 to n do  
                begin  
                   for j:=1 to m do  
                   if f[i,j]>ans then ans:=f[i,j];  
                end;  
                if ans=0 then writeln('1') else write(ans);  //注意特判ans=0的情况
      
      
    end.  
  • 相关阅读:
    windows下配置docker
    libxml2 安装及使用
    lua 5.3 英文手册 自己收集整理版
    Unity3D RPC调用顺序问题
    对于问题的一个思考
    第十三章博客
    第十一章
    第十章博客
    第九章笔记
    S1304数据库前三章测试错题
  • 原文地址:https://www.cnblogs.com/wuminyan/p/4728416.html
Copyright © 2020-2023  润新知