屏蔽ip网站,2018网站开发,平台设计软件,十堰微网站建设多少钱心路历程#xff1a;
这道题是一个动态规划题#xff0c;但是其实递推关系很难想到#xff0c;如下图所示#xff1a; MDP建模#xff1a; 状态#xff1a;以i,j为右下角的正方形 动作候选集#xff1a;这道题的动作候选集其实是是否选择其左上角邻接的三个位置#x…
心路历程
这道题是一个动态规划题但是其实递推关系很难想到如下图所示 MDP建模 状态以i,j为右下角的正方形 动作候选集这道题的动作候选集其实是是否选择其左上角邻接的三个位置动作候选集的特征不是特别明显。 返回值最大正方形的边长
注意的点
1、注意题目中给出的是’0’而不是0 2、注意边长要转化为面积
解法动态规划
class Solution:def maximalSquare(self, matrix: List[List[str]]) - int:n, m len(matrix), len(matrix[0])cachedef dp(i, j): # 以i,j为右下顶点的正方形的边长最大值if matrix[i][j] 0: return 0if not (0 i n) or not (0 j m): return 0return min(dp(i-1, j-1), dp(i, j-1), dp(i-1, j)) 1res 0for i in range(n):for j in range(m):res max(res, dp(i, j))return res ** 2