zoukankan      html  css  js  c++  java
  • 最大正方形 (Standard IO)

    Description

      给一个N*N的01矩阵, 求一个面积最大的全为1的正方形子矩阵. 输出它的面积.

    Input

      输入文件square.in的第一行包含一个正整数N.
      接下来N行, 每行N个数, 保证不是0就是1. 每行相邻两个数之间没有空格.

    Output

      输出文件为square.out,仅包含一个整数表示最大的全1子正方形矩阵的面积。

    题解

    五个字,优美的暴力。
    

    代码

    var
      n,ans:longint;
      f:array [0..1001,0..1001] of integer;
      a:array [0..1001,0..1001] of char;
    procedure init;
    var
      i,j:longint;
    begin
      readln(n);
      for i:=1 to n do
        begin
          for j:=1 to n do
            read(a[i,j]);
          readln;
        end;
      for i:=0 to n+1 do
        begin
          a[0,i]:='0';
          a[n+1,i]:='0';
        end;
      for i:=0 to n+1 do
        begin
          a[i,0]:='0';
          a[i,n+1]:='0';
        end;
      ans:=0;
    end;
    
    procedure main;
    var
      i,j,x,min:longint;
    begin
      fillchar(f,sizeof(f),0);
      for i:=1 to n do
        for j:=1 to n do
          if (a[i,j]='1') then
            if (a[i-1,j]='0') then f[i,j]:=1
                              else f[i,j]:=f[i-1,j]+1;
      for i:=1 to n do
        for j:=1 to n do
          if a[i,j]='1' then
            begin
              x:=j; min:=maxlongint;
              while a[i,x]='1' do
                begin
                  if f[i,x]<min then min:=f[i,x];
                  if ((x-j+1)*min>ans) and ((x-j+1)=min) then ans:=(x-j+1)*min;
                  inc(x);
                end;
            end;
      write(ans);
    end;
    
    begin
      init;
      main;
    end.
    
  • 相关阅读:
    Spring Boot中的JSON技术
    Spring Boot中编写单元测试
    如何保证事务方法的幂等
    定时重试线程池
    多线程导致事务失效-记一次性能优化
    自己实现一个简单的数据库事务
    服务器错误码国际化
    spring自定义自动配置注解
    springboot中如何启动tomcat
    用grep来查询日志
  • 原文地址:https://www.cnblogs.com/zyx-crying/p/9319612.html
Copyright © 2011-2022 走看看