当炸弹在Python中爆炸时,查找地方数量的程序安全吗?
假设我们有一个二维二进制矩阵,其中1表示炸弹,0表示空单元。炸弹爆炸时,同一行和同一列上的所有空间均被破坏。我们必须找到可以站立的空间数量而不会受到损坏。
所以,如果输入像
那么输出将为2,因为在右下角单元格和右中角单元格有两个空格是安全的。
为了解决这个问题,我们将按照以下步骤操作:
r:=列表的大小与矩阵的行数相同,并用false填充
c:=与矩阵的列数相同的大小列表,并用false填充
对于范围从0到矩阵的行计数的i,执行1
如果matrix[i,j]与1相同,则
r[i]:=真,c[j]:=真
对于范围0到矩阵1的列数的j,执行
ct:=0
对于范围从0到矩阵的行计数的i,执行1
如果r[i]为False,而c[j]为False,则
ct:=ct+1
对于范围0到矩阵1的列数的j,执行
返回ct
让我们看下面的实现以更好地理解:
示例
class Solution:
def solve(self, matrix):
r = [False for i in range(len(matrix))]
c = [False for i in range(len(matrix[0]))]
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if matrix[i][j] == 1:
r[i] = True
c[j] = True
ct = 0
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if r[i] == False and c[j] == False:
ct += 1
return ct
ob = Solution()matrix = [
[1, 1, 0],
[0, 0, 0],
[0, 0, 0]
]
print(ob.solve(matrix))输入值
[ [1, 1, 0], [0, 0, 0], [0, 0, 0] ]
输出结果
2