使用 Python 查找二进制矩阵中特殊位置的数量的程序


假设我们有一个 m x n 阶的二进制矩阵,我们需要找到矩阵中特殊位置的数量。当 mat[i,j] = 1 且第 i 行和第 j 列中的所有其他元素都为 0 时,位置 (i,j) 就是一个特殊位置。

所以,如果输入如下所示:

10000
00100
00011
01000

那么输出将是 3,这里特殊位置是 (0, 0)、(1,2) 和 (3,1)。

为了解决这个问题,我们将遵循以下步骤:

  • special := 0

  • 对于 i 从 0 到矩阵的行数,执行以下操作:

    • 如果矩阵[i] 行中 1 的数量为 1,则:

      • numOfOne := 0

      • indexOfOne := 矩阵[i] 中 1 的位置

      • 对于 j 从 0 到矩阵的列数,执行以下操作:

        • 如果矩阵[j, indexOfOne] 等于 1,则:

          • numOfOne := numOfOne + 1

        • 如果 numOfOne > 1,则:

          • 退出循环

      • 如果 numOfOne 等于 1,则:

        • special := special + 1

  • 返回 special

示例(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

更新于: 2021年5月17日

252 次查看

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告