• JZOJ 2548. 【NOIP2011模拟9.4】最大正方形


    题目

    Description

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

    Input

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

    Output

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

    Sample Input

    2
    11
    11

    Sample Output

    4
     

    Data Constraint

     
     

    Hint

    【数据规模和约定】
      80%的数据中 N<=250;
      100%的数据中 N <= 1000。

     

    分析

           

              矩阵前缀和

     

    代码

     1 #include<iostream>
     2 #include<cmath>
     3 using namespace std;
     4 int map[1001][1001],sum[1001][1001];
     5 int ans;
     6 int main ()
     7 {
     8     int n;
     9     char c;
    10     cin>>n;
    11     for (int i=1;i<=n;i++)
    12         for (int j=1;j<=n;j++)
    13         {
    14             cin>>c;
    15             map[i][j]=c-'0';
    16         }
    17     for (int i=1;i<=n;i++)
    18         for (int j=1;j<=n;j++)
    19           sum[i][j]=sum[i][j-1]+sum[i-1][j]-sum[i-1][j-1]+map[i][j];
    20     for (int i=1;i<=n;i++)
    21     {
    22         for (int j=1;j<=n;j++)
    23         {
    24             for (int k=sqrt(ans);i+k-1<=n&&j+k-1<=n;k++)
    25             {
    26                 if (sum[i+k-1][j+k-1]-sum[i+k-1][j-1]-sum[i-1][j+k-1]+sum[i-1][j-1]==k*k)
    27                   ans=max(k*k,ans);
    28                 else break;
    29             }
    30         }
    31     } 
    32       cout<<ans;
    33 }

     

    为何要逼自己长大,去闯不该闯的荒唐
  • 相关阅读:
    ajax 检测用户名是否可用
    Ajax 知识
    flask 基础
    如何使Session永不过期
    Css 截取字符串长度
    json sort
    js 原生获取Class元素
    js 跳转整理
    html5 ajax Java接口 上传图片
    调用URL 接口服务
  • 原文地址:https://www.cnblogs.com/zjzjzj/p/10698904.html
Copyright © 2020-2023  润新知