Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで等しい行の最大数の列を反転する


0と1で構成される行列があるとすると、行列内の任意の数の列を選択して、その列のすべてのセルを反転できます。セルを変換すると、そのセルの値が0から1または1から0に変更されます。いくつかのフリップの後、すべての値が等しい行の最大数を見つける必要があります。したがって、行列が-

のような場合
0 0 0
0 0 1
1 1 0

出力は2になります。これは、最初の2列の値を変換した後、最後の2行の値が等しいためです。

これを解決するには、次の手順に従います-

  • x:=行列、m:=行数、n:=列数、r:=0
  • x
      の各要素iについて
    • c:=0
    • a:=iのすべての要素lのリスト、lXORiを挿入
    • x
        の各要素jについて
      • j=iまたはj=aの場合、cを1増やします
    • r:=cとrの最大値
  • return r

理解を深めるために、次の実装を見てみましょう-

class Solution(object):
   def maxEqualRowsAfterFlips(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()
print(ob.maxEqualRowsAfterFlips([[0,0,0],[0,0,1],[1,1,0]]))

入力

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

出力

2

  1. n番目のフィボナッチ数のPythonプログラム

    この記事では、n番目のフィボナッチ数を計算します。 フィボナッチ数 以下に示す漸化式によって定義されます- Fn = Fn-1 + Fn-2 あり F 0 =0およびF1 =1。 まず、フィボナッチ数はほとんどありません 0,1,1,2,3,5,8,13,.................. フィボナッチ数を計算できます 再帰と動的計画法の方法を使用します。 それでは、Pythonスクリプトの形式での実装を見てみましょう アプローチ1:再帰方法​​ 例 #recursive approach def Fibonacci(n):    if n<0: &

  2. n番目のカタラン数のPythonプログラム

    この記事では、n番目のカタラン数の計算について学習します。 カタラン数 再帰式-によって定義される自然数のシーケンスです。 $$ C_ {0} =1 \:and \:C_ {n + 1} =\ displaystyle \ sum \ Limits_ {i =0} ^ n C_ {i} C_ {n-i} for \:n \ geq0; $$ n =0、1、2、3、…の最初のいくつかのカタラン数は 1、1、2、5、14、42、132、429、..............です。 .... カタラン数は、再帰と動的計画法の両方で取得できます。その実装を見てみましょう。 アプローチ1:再