在Python中查找行最大数量的相等行所需翻转的列数的程序?

在Python中查找行最大数量的相等行所需翻转的列数的程序?

假设我们有一个二进制矩阵,我们可以选择任意数量的列在该矩阵中翻转每个单元格。转换单元格意味着反转单元格的值。我们必须找到在某些翻转次数后,拥有所有等值的最大行数。如果矩阵是这样的:

0 0 0
0 0 1
1 1 0

则输出将为2。这是因为在转换前两列的值后,最后两行具有相等的值。

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

  • x := matrix, m := 行数,n := 列数和 r := 0

  • 对于 x 中的每个元素 i

    • c := 0

    • a := 一个关于 i 的所有元素 l 的列表,插入 l XOR i

    • 对于 x 中的每个元素 j

      • 如果 j = i 或 j = a,则将 c 增加 1
    • r := c 和 r 的最大值

  • 返回 r

让我们看下面的实现以获得更好的理解:

更多Python相关文章,请阅读:Python 教程

示例

class Solution(object):
   def solve(self, matrix):
      x = matrix
      m = len(matrix)
      n = len(matrix[0] )
      r =0
      for i in x:
         c=0
         a=[l ^ 1 for l in i]
         for j in x:
            if j== i or j ==a:
               c+=1
         r=max(c, r)
      return r

ob = Solution()
matrix = [[0,0,0],
         [0,0,1],
         [1,1,0]]
print(ob.solve(matrix))

输入

[[0,0,0],
[0,0,1],
[1,1,0]]

输出

2

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程