国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Leetcode 221 - Maximal Square(dp)

2019-11-10 21:55:17
字體:
供稿:網(wǎng)友

題意

給定一個由01組成的矩形,要求找出矩形內(nèi)由1組成的最大正方形面積。

思路

狀態(tài)表示d[i,j],以位置為矩形右下角的最大正方形的邊長。r[i,j],第i行,到第j個位置的1的長度。c[i,j],第j列,到第i個位置的1的長度。

轉(zhuǎn)移方程d[i,j]=min{d[i?1,j?1]+1,r[i,j],c[i,j]}

時間復(fù)雜度O(n2)

代碼

const int maxn = 505;class Solution {public: int d[maxn][maxn], r[maxn][maxn], c[maxn][maxn]; int maximalSquare(vector<vector<char>>& matrix) { int m = matrix.size(); if (m) { int n = matrix[0].size(), ans = 0; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (matrix[i][j] == '1') { r[i][j] = (j ? r[i][j - 1] + 1 : 1); c[i][j] = (i ? c[i - 1][j] + 1 : 1); } else { r[i][j] = c[i][j] = 0; } d[i][j] = min(min(r[i][j], c[i][j]), i && j ? d[i - 1][j - 1] + 1 : 1); ans = max(ans, d[i][j]); } } return ans * ans; } return 0; }};
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 南靖县| 丹阳市| 精河县| 临洮县| 教育| 修武县| 平谷区| 龙江县| 申扎县| 华蓥市| 喀喇沁旗| 仙桃市| 龙川县| 渝北区| 石渠县| 马尔康县| 金川县| 长岛县| 松江区| 南木林县| 上饶市| 孟连| 阜宁县| 德安县| 宜黄县| 内乡县| 普安县| 梓潼县| 腾冲县| 长阳| 巴马| 建水县| 余干县| 邢台县| 施甸县| 辉南县| 通渭县| 嘉峪关市| 武义县| 阜康市| 和政县|