博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1387 最大正方形
阅读量:4985 次
发布时间:2019-06-12

本文共 838 字,大约阅读时间需要 2 分钟。

题目描述 

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

解析:

dp[i][j]代表(i,j)为右下角的正方形的最大边长

有关正方形的dp好像都需要这么思考,找这几个中边长最小的更新 

这里写图片描述 
状态转移方程: dp[i][j]=min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+1;

#include 
using namespace std;#define maxn 1005#define inf 0x3f3f3f3fint a[maxn][maxn];int dp[maxn][maxn];int n,m;int ans=0;int main(){ cin>>n>>m; for(int i=1; i<=n; i++) 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]) { dp[i][j]=min(dp[i-1][j],min(dp[i-1][j-1],dp[i][j-1]))+1; ans=max(ans,dp[i][j]); } cout<

 

转载于:https://www.cnblogs.com/planche/p/8438173.html

你可能感兴趣的文章
ORA-01093: ALTER DATABASE CLOSE only permitted with no sessions connected
查看>>
linux下mysql配置文件my.cnf详解
查看>>
获取微信用户列表Openid
查看>>
架构必备词汇
查看>>
SublimeText快捷键操作
查看>>
Python开发 基礎知識 (未完代補)
查看>>
监听器的使用,以及实现, 测试
查看>>
java基础二 分支循环
查看>>
python--002--数据类型(list、tuple)
查看>>
把近期的小错误整理一下
查看>>
动态规划 —— 背包问题一 专项研究学习
查看>>
51nod 1571 最近等对 | 线段树 离线
查看>>
关于parseInt的看法
查看>>
从用户端到后台系统,严选分销教会我这些事
查看>>
数据分析融入至BI工具的新思路
查看>>
c#必会知识点
查看>>
网页使用MD5加密
查看>>
JS 基础
查看>>
HBase shell 中的十六进制数值表示
查看>>
Python3 中 configparser 模块解析配置的用法详解
查看>>