使用Python查找二进制矩阵中特殊位置的数量
假设我们有一个大小为m x n的二进制矩阵,我们必须找到矩阵中特殊位置的数量。当mat[i,j]=1且行i和列j中的所有其他元素都为0时,位置(i,j)是特殊位置。
因此,如果输入如下:
1 | 0 | 0 | 0 | 0 |
---|---|---|---|---|
0 | 0 | 1 | 0 | 0 |
0 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 0 | 0 |
那么输出将是3,这里的特殊位置是(0,0),(1,2)和(3,1)。
要解决这个问题,我们将遵循以下步骤 –
- special := 0
-
对于矩阵行的数量的范围从0到i,做以下操作 –
- 如果矩阵[i]中的1的数量为1,则 –
- numOfOne := 0
-
indexOfOne := 1在矩阵[i]中的位置
-
对于矩阵的列大小的范围从0到j,做以下操作 –
-
如果matrix[j, indexOfOne]与1相同,则 –
- numOfOne :=numOfOne + 1
- 如果numOfOne > 1,则 –
- 从循环中退出
- 如果numOfOne与1相同,则 –
-
special := special + 1
- 如果矩阵[i]中的1的数量为1,则 –
-
返回special
更多Python相关文章,请阅读:Python 教程
示例(Python)
让我们看下面的实现以更好地理解 –
def solve(matrix):
special = 0
for i in range(len(matrix)):
if matrix[i].count(1) == 1:
numOfOne = 0
indexOfOne = matrix[i].index(1)
for j in range(len(matrix)):
if matrix[j][indexOfOne] == 1:
numOfOne += 1
if numOfOne > 1:
break
if numOfOne == 1:
special += 1
return special
matrix = [[1,0,0,0,0],
[0,0,1,0,0],
[0,0,0,1,1],
[0,1,0,0,0]]
print(solve(matrix))
输入
[[1,0,0,0,0],
[0,0,1,0,0],
[0,0,0,1,1],
[0,1,0,0,0]]
输出
3