当前位置: 首页 > news >正文

P1387 最大正方形

题目描述

在一个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

代码

#include<iostream>
#include<algorithm>
using namespace std;
int a[102][102];
int main()
{int n,m;cin>>n>>m;for(int i=1;i<=n;i++){//输入n行m列个包含0和1的数for(int j=1;j<=m;j++){cin>>a[i][j];}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(a[i][j]==1){//计算二维数组每一行的前缀和a[i][j]=a[i][j-1]+1;}else a[i][j]=a[i][j-1];}} for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){//计算二维数组每一列的前缀和。a[j][i]=a[j][i]+a[j-1][i];}} int mm=1;//统计最大的正方形的边长,最小为1。for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){//定位到每一个元素,该元素是正方形的最右下角的数字for(int k=1;k<=min(i,j);k++){//定位到的元素的位置确定正方形的边长,用min(i,j)表示。int t=a[i][j]-a[i][j-k]-a[i-k][j]+a[i-k][j-k];//通过最右下角的元素,以及要求正方形的边长求得矩形的总和。if(t==k*k&&mm<=k){//如果求得的总和等于边长的长度,则是要求的正方形,并且寻找最大的正方形边长。mm=k;}
//				cout<<t<<"\n";}}} cout<<mm;
//	for(int i=1;i<=n;i++){
//		for(int j=1;j<=m;j++){
//			cout<<a[i][j]<<" "; 
//		}cout<<"\n";
//	} return 0;
} 

http://www.lryc.cn/news/454202.html

相关文章:

  • Python知识点:如何使用Multiprocessing进行并行任务管理
  • React常见优化问题
  • css 简单网页布局——浮动(一)
  • 设计模式(3)builder
  • Day01-MySQL数据库介绍及部署
  • 分享一个餐饮连锁店点餐系统 餐馆食材采购系统Java、python、php三个版本(源码、调试、LW、开题、PPT)
  • 解决跨域问题
  • 面试知识储备-多线程
  • 边缘计算插上AI的翅膀会咋样?
  • 脉冲神经网络(SNN)论文阅读(六)-----ECCV-2024 脉冲驱动的SNN目标检测框架:SpikeYOLO
  • 周报_2024/10/6
  • [深度学习][python]yolov11+bytetrack+pyqt5实现目标追踪
  • 如何使用ssm实现基于Web的穿戴搭配系统的设计与实现+vue
  • JavaScript的设计模式
  • CIKM 2024 | 时空数据(Spatial-temporal)论文总结
  • 计算机毕业设计 网上体育商城系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 【数据结构】什么是哈希表(散列表)?
  • 【优选算法】(第二十三篇)
  • Java.数据结构.HashSet
  • 关于懒惰学习与渴求学习的一份介绍
  • sed 环境配置
  • 黑神话:仙童,数据库自动反射魔法棒
  • 香江电器冲刺港交所上市:投资方提前撤资退出,因对赌协议而赔偿
  • SpringSecurity实现自定义登录接口
  • 深度解析:Tkinter 界面布局与优化技巧
  • RCE_无回显
  • 文心一言智能体——绿色生活管家
  • 无人机(自组穿越机,航模)-芯片选型
  • [Cocoa]_[初级]_[绘制文本如何设置断行效果]
  • IPS和IDS有啥区别