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


    这题我用的是比较慢一点的方法。
    首先,枚举整个方阵。再依次枚举边长,在两重循环判断这里有没有0,有0则退出false,没有则边长加一。


    代码如下:

    var i,j,n,m,ans,num,k,l,h,l1,h1:longint;
        a:array[0..1000,0..1000] of longint;
    
    function try(h,l,h1,l1:longint):boolean;
    var i,j,n,m:longint;
    begin
      for i:=h to h1 do
        for j:=l to l1 do
          if a[i,j]=0 then exit(false);
      exit(true);
    end;
    
    begin
      readln(n,m);
      ans:=1;
      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
            begin
              k:=1;
              h:=i+1; 
              l:=j+1;
              while try(i,j,h,l) do
                begin 
                  inc(h); 
                  inc(l); 
                  inc(k); 
                end;
              if k>ans then ans:=k;
            end;
      writeln(ans);
    end. 
  • 相关阅读:
    JavaScript类型转换
    JavaScript中的 typeof,null,和undefined
    JavaScript循环
    JavaScript条件语句
    JavaScript运算符
    JavaScript字符串
    JavaScript事件
    JavaScript对象,函数,作用域
    JavaScript基础
    数值数据的特征预处理
  • 原文地址:https://www.cnblogs.com/Comfortable/p/8412427.html
Copyright © 2020-2023  润新知