zoukankan      html  css  js  c++  java
  • 洛谷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.  
  • 相关阅读:
    [Java123] JDBC and Multi-Threading 多线程编程学习笔记
    3:2D装换 [ 重点 ]
    2:属性选择器 + 结构伪类选择器 + 伪元素
    1:新增 H5 常用属性
    day2
    代码实操第一天
    1 滑动门
    css高级技巧
    11:网页布局总结
    10:定位
  • 原文地址:https://www.cnblogs.com/wuminyan/p/4728416.html
Copyright © 2011-2022 走看看