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


    这题我用的是比较慢一点的方法。
    首先,枚举整个方阵。再依次枚举边长,在两重循环判断这里有没有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. 
  • 相关阅读:
    构造函数详解
    左值和左值引用、右值和右值引用
    Lambda函数
    std::thread详解
    运算符重载
    友元函数和友元类
    xadmin list_filter 外键数据不显示
    中缀表达式转后缀表达式
    Centos 7 minimal 联网
    python 运用三目判断对象中多个属性 有且非空
  • 原文地址:https://www.cnblogs.com/Comfortable/p/8412427.html
Copyright © 2011-2022 走看看