• [洛谷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

    思路

      DP,f[i,j]表示以i,j为最右边最下边点的正方形大小。

      f[i,j]:=min(min(f[i-1,j],f[i,j-1]),f[i-1,j-1])+1

    var a,f:array[0..1000,0..1000] of longint;  
        n,m,i,j,ans:longint;  
      
    function max(x,y:longint):longint;  
    begin  
        if x>y then exit(x) else exit(y);  
    end;  
      
    function min(x,y:longint):longint;  
    begin  
        if x>y then exit(y) else exit(x);  
    end;  
      
    begin  
        fillchar(a,sizeof(a),0);  
        fillchar(f,sizeof(f),0);  
        readln(n,m);  
        for i:=1 to n do  
            for j:=1 to m do  
                read(a[i,j]);  
        for i:=1 to n do  
            for j:=1 to m do  
                if a[i,j]=1 then  
                    f[i,j]:=min(min(f[i-1,j],f[i,j-1]),f[i-1,j-1])+1;  
        for i:=1 to n do  
            for j:=1 to m do  
                ans:=max(ans,f[i,j]);  
        writeln(ans);  
    end.  
    View Code
  • 相关阅读:
    Linux-Rsync文件同步
    Linux-PPTP服务器搭建
    Excle破解忘记保护密码的方法。
    Linux-多维度服务器调优
    postman测试钉钉审批接口
    linux 常用服务器部署
    DRF
    15.ES6模块
    14.class类
    13. async用法
  • 原文地址:https://www.cnblogs.com/yangqingli/p/4906420.html
Copyright © 2020-2023  润新知