436
来源:互联网 发布:搜狐快站绑定独立域名 编辑:程序博客网 时间:2024/06/05 12:03
2017.9.5
依旧是在学习动态规划。
给定一个点,如果它的值为1的话,
在这种情况下正方形的边长可以加1 ———— 它的上方,它的左方,它的左上角都必须为1;
加入这个节点之后,最新形成的正方形的边长为 ———— 上方,左方,左上方的最小值 + 1;
否则, 这个节点的dp值为1。
public class Solution { /** * @param matrix: a matrix of 0 and 1 * @return: an integer */ public int maxSquare(int[][] matrix) { // write your code hereint n = matrix.length;if(n <= 1){return n;}int m = matrix[0].length;if(m <= 1){return m;}int [][]dp = new int[n][m];int max = 0;for(int i = 0; i < n; i++){if(matrix[i][0] == 1){dp[i][0] = 1;max = Math.max(max, 1);}}for(int j = 0; j < m; j++){if(matrix[0][j] == 1){dp[0][j] = 1;max = Math.max(max, 1);}}for(int i = 1; i < n; i++){for(int j = 1; j < m; j++){if(matrix[i][j] == 1){if(matrix[i-1][j] == 1 && matrix[i][j-1] == 1 && matrix[i-1][j-1] == 1){dp[i][j] = Math.min(dp[i-1][j], dp[i][j-1]);dp[i][j] = Math.min(dp[i][j], dp[i-1][j-1]) + 1;}else{dp[i][j] = 1;}max = Math.max(max, dp[i][j]);}}}return max * max; }}
阅读全文
0 0
- 436
- ocp-436
- codeforces #436
- SRM 436 DigitsSwap (math)
- lintcode-436-Maximal Square
- UVa 436 - Arbitrage (II)
- 436_画出圆周运动
- lintcode(436)最大正方形
- UVA 436 - Arbitrage (II)(floyd)
- UVA 436Arbitrage (II)【floyd】
- Codeforces Round #436 (Div. 2)
- Codeforces Round #436 (Div. 2)
- [Codeforces Round #436](Div. 2)
- Codeforces Round #436 (Div. 2)
- Codeforces Round #436 (Div. 2)
- Codeforces Round #436 (Div. 2)
- [Codeforces Round #436 (Div. 2)]
- Codeforces Round #436 (Div. 2)
- Hibernate入门案例
- 通过PHP自带的$_SERVER判断 手机访问网站自动跳转到手机版
- JavaScript学习总结(三)——逻辑And运算符详解
- baidu map
- 好像叫单点登录吧?(自用)
- 436
- 用VS新建一个C++类
- python 获取地图信息
- mongo数据库的各种查询语句示例(比较全的)
- 函数数组
- 6种负载均衡算法
- 中兴ZXMP S200光传输设备介绍
- 垃圾回收器
- MVC是什么?