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

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

2018-08-16

https://www.luogu.org/problemnew/show/P1387

题意:

略。

4 4

0 0 1 1      把这个翻译成dp的形式   0 0 1 1

0 1 1 1              0 1 1 2

1 1 1 1         —>          1 1 2 2

0 1 1 1              0 1 2 3

好了,就不难理解dp[i][j]存放的就是在i*j的区域中存在的最大正方形,而找dp[i-1][j-1],dp[i-1][j],dp[i][j-1]

找这3个的最小值,就是保证以 坐标(i ,j)为右下角的正方形的左上角,右上角,左下角为1,(因为dp[i][j]是前面发展出来的)

所以,不用考虑中间可能为0的情况。好了代码如下;

#include
#include
using namespace std;int num[102][102];int dp[102][102];int ans;int main(){ int n, m; scanf("%d%d", &n, &m); for (int i = 1; i <= n;++i) for (int j = 1; j <= m; ++j) { scanf("%d", &num[i][j]); if (num[i][j] == 1)dp[i][j] = min(min(dp[i - 1][j], dp[i][j - 1]), dp[i - 1][j - 1]) + 1; ans = max(ans, dp[i][j]); } printf("%d\n", ans);}

 

转载于:https://www.cnblogs.com/ALINGMAOMAO/p/9488649.html

你可能感兴趣的文章
Windows下查看JDK是否安装以及安装路径
查看>>
java中变量运算细节 (2)
查看>>
mysql distinct
查看>>
POJ1062:昂贵的聘礼(枚举+迪杰斯特拉)
查看>>
Android ANR发生原因总结
查看>>
编程算法 - 求1+2+...+n(函数指针) 代码(C++)
查看>>
WorldWind源码剖析系列:插件列表视图类PluginListView和插件列表视图项类PluginListItem...
查看>>
JS系列——Linq to js使用小结
查看>>
畅通工程,继续畅通工程,畅通工程再续,多种解法
查看>>
Swift String length property
查看>>
interlliJ idea 不识别文件类型的解决方式
查看>>
Atitit.数据库表的物理存储结构原理与架构设计与实践
查看>>
在Visual Studio Code中配置GO开发环境
查看>>
可以输入也可以下拉选择的select
查看>>
Windows消息传递机制具体解释
查看>>
结合MongoDB开发LBS应用(转)
查看>>
SDWebImage 原理及使用
查看>>
前端开发 Grunt 之 Connect详解
查看>>
IE11下不能引入外部css的解决方法
查看>>
Android 模式对话框提示Dialog
查看>>