给出一个由数字0和1组成的矩阵,我试图找到仅包含1的正方形的最大大小。
如果我编写上面的代码,我将得到IndexError:列表索引超出范围。但是,如果我将第34行的代码更改为if arr[i-1][j-1] == '1':
,则它可以工作。
我的问题是这是怎么发生的?我检查了arr中的项目类型,它们都是int类型,那么为什么在我写if arr[i-1][j-1] == 1:
时它不起作用?
任何答案都将有所帮助,谢谢。
dp
只有1行包含(rows+1) * (cols+1)
零,没有rows+1
行具有cols+1
零。因此,每当您使用dp[i]
访问i >= 1
时,都会出现错误。
应该是:
dp = [[0 for i in range(cols+1)] for j in range(rows+1)]
或更简单地
dp = [[0] * (cols+1) for _ in range(rows+1)]