分析:
这个题暴力解也能过了,最佳解法使用动态规划的思想:本题考虑的是正方形的面积,所以算出最长的边长就好。我们假设dp[i][j] 是以 [i][j] 为顶点的最大的正方形边长。我们可以写出状态转移方程:
若 [i][j] 这个点是1 :那么dp[i][j]=min{dp[i-1][j-1],dp[i-1][j],dp[i][j-1]}+1。
否则 : dp[i][j]=0
暴力解法:
遍历矩阵每个元素,以这个元素作为正方形的左上角,寻找最大面积。复杂度为O(n*n)。这种算法存在大量的重复计算比如: 左上角[0][0]元素计算是有必要的,但是[1][1]元素计算就重复了。因为[1][1]元素所形成的正方形矩阵是[0][0]元素的子集。所以我们在动态规划思想里面假设dp[i][j