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

Pythonでのみ対応する値を交換することにより、2つの行列を厳密に増加させることが可能かどうかを確認します


mat1とmat2という名前のサイズnxmの2つの行列があるとします。両方のマトリックスの位置(i、j)にある場合にのみ、異なるマトリックスの2つの要素のみを交換することにより、これら2つのマトリックスが厳密に増加しているかどうかを確認する必要があります。

したがって、入力が次のような場合

7 1
5
1
6
1
0


1
4
9
8 1
7

(7、14)と(10、17)のペアを入れ替えて厳密に増加させることができるため、出力はTrueになります。

1
4
1
5
1
6
1
7


7 9
8 1
0

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

  • row:=mat1の行数
  • col:=mat1の列数
  • 0から行-1の範囲のiの場合、実行
    • 0からcol-1の範囲のjの場合、do
      • mat1 [i、j]> mat2 [i、j]の場合、
        • mat1 [i、j]とmat2 [i、j]を入れ替える
    • 0から行-1の範囲のiの場合、実行
      • 0からcol-2の範囲のjについては、
        • mat1 [i、j]> =mat1 [i、j +1]またはmat2[i、j]> =mat2 [i、j + 1]の場合、
          • Falseを返す
    • 0から2行目の範囲のiについては、
      • 0からcol-1の範囲のjの場合、do
        • mat1 [i、j]> =mat1 [i + 1、j]またはmat2 [i、j]> =mat2 [i + 1、j]の場合、
          • Falseを返す
  • Trueを返す

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

def solve(mat1, mat2):
   row = len(mat1)
   col = len(mat1[0])
   for i in range(row):
      for j in range(col):
         if mat1[i][j] > mat2[i][j]:
            mat1[i][j], mat2[i][j]= mat2[i][j], mat1[i][j]
   for i in range(row):
      for j in range(col-1):
         if mat1[i][j]>= mat1[i][j + 1] or mat2[i][j]>= mat2[i][j + 1]:
            return False
   for i in range(row-1):
      for j in range(col):
         if mat1[i][j]>= mat1[i + 1][j] or mat2[i][j]>= mat2[i + 1][j]:
            return False
   return True
mat1 = [[7, 15],
         [16, 10]]
mat2 = [[14, 9],
         [8, 17]]
print(solve(mat1, mat2))

入力

[[7, 15],
[16, 10]],
[[14, 9],
[8, 17]]

出力

True

  1. Pythonでノードを交換することで2つのツリーを形成できるかどうかを確認するプログラム

    2つのツリーがあるとすると、ノードの左右のサブツリーを何度でも交換して、最初のツリーを2番目のツリーに変換できるかどうかを確認する必要があります。 したがって、入力が次のような場合 その場合、出力はTrueになります これを解決するには、次の手順に従います- que1:=最初はroot0のキュー que2:=最初はroot1のキュー que1とque2は空ではありませんが、実行してください temp1:=新しいリスト、temp2:=新しいリスト values1:=新しいリスト、values2:=新しいリスト que1とque2に含まれる要素の数が

  2. 配列内のすべての桁を使用して3つの数値で割り切れる可能性があるかどうかを確認するPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 整数の配列入力が与えられた場合、3で割り切れるように、これらの数値で使用可能なすべての数字を使用して整数を作成できるかどうかを確認する必要があります。 ここでは、整数の配列と配列の長さという2つの引数を取る関数を生成します。 以下に示す実装は、精神数学の概念に基づいて機能します。ここでは、桁の合計が3で割り切れる場合、数値は3で割り切れることがわかります。 次に、以下の実装を見てみましょう- 例 def isPossibleToMakeDivisible(arr, n): &nbs