一, 输入一个二维01矩阵,判断矩阵中全为1的正方形的最大边长
1, 问题描述
输入一个二维01矩阵,判断矩阵中全为1的正方形的最大边长
2, 输入:
0 1 1 0 1 0
1 1 1 0 1 1
0 1 1 1 1 0
0 0 0 1 0 1
1 1 0 0 0 0
输出:
2
3, 算法思想: 将矩阵中每个点作为正方形右下角来处理,然后该点比它的左方,上方,左上方为右下角的正方形边长多1, 因此,只需要从这三个正方形中取最小的正方形边长, 然后+1 作为当前正方形的边长,
状态转移方程:
dp[i][j] = min(dp[i-1][j-1], min(dp[i][j-1], dp[i-1][j])) + 1
二,python实现程序
class Solution(object):
def getmax(self, lists):
if lists == [] or not lists:
return 0
row = len(lists)
col = len(lists[0])
res = 0
dp = [[0 for i in range(col)] for j in range(row)]
print(dp)
for i in range(row):
for j in range(col):
if i &#