程序来查找翻转的列数以获得Python中相等行的最大数目?

假设我们有一个二进制矩阵,我们可以在给定矩阵中选择任意数量的列,然后翻转该列中的每个单元格。转换单元格意味着将单元格值取反。我们必须找到经过一定数量翻转后所有值都相等的最大行数。所以如果矩阵像

000
001
110

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

为了解决这个问题,我们将按照以下步骤操作:

  • x:=矩阵,m:=行数,n:=列数,r:= 0

  • 对于x中的每个元素

    • 如果j = i或j = a,则将c加1

    • c:= 0

    • a:= i中所有元素l的列表,插入l XOR i

    • 对于x中的每个元素j

    • r:= c和r的最大值

    • 返回r

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

    示例

    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