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

Pythonで安全な距離を維持できるkの最大値を見つけるプログラム


バイナリ行列があるとします。ここで、0は空のセルを意味し、1は人がいるセルを意味します。 2つのセル間の距離は、x座標の差とy座標の差の最大値です。これで、セルからマトリックス内の各人までの距離が空の正方形であり、マトリックスの各辺がすべてk以上である場合、マトリックスは係数kで安全であると見なされます。安全にできる係数kの最大値を見つける必要があります。

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

0 0 0 0 0
0 1 0 1 0
0 1 1 1 0
0 1 1 1 0
0 0 0 0 0

中央のセルでは、セルからグリッド内の各人までの距離が少なくとも1であるため、出力は1になります。

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

  • N:=Aのサイズ

  • M:=A [0]

    のサイズ
  • 0からNの範囲のiの場合、実行

    • 0からMの範囲のjについては、次のようにします

      • A [i、j]:=A [i、j] XOR 1

  • ans:=0

  • 0からNの範囲のiの場合、実行

    • 0からMの範囲のjについては、次のようにします

      • iとjがゼロ以外で、A [i、j]が1の場合、

        • A [i、j]:=1+最小値のA[i-1、j]、A [i、j-1]およびA [i-1、j-1]

        • ans =A [i、j]とansの最大値

  • return(ans + 1)/ 2

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

class Solution:
def solve(self, A):
   N = len(A)
   M = len(A[0])
   for i in range(N):
      for j in range(M):
         A[i][j] ^= 1
   ans = 0
   for i in range(N):
      for j in range(M):
         if i and j and A[i][j]:
            A[i][j] = 1 + min(A[i - 1][j], A[i][j - 1], A[i - 1][j - 1])
            ans = max(A[i][j], ans)
   return (ans + 1) // 2
ob = Solution()
matrix = [
   [0, 0, 0, 0, 0],
   [0, 1, 1, 1, 0],
   [0, 1, 0, 1, 0],
   [0, 1, 1, 1, 0],
   [0, 0, 0, 0, 0],
]
print(ob.solve(matrix))

入力

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

出力

1

  1. Pythonで複数のコピーを取得することにより、ナップサック問題で取得できる最大値を見つけるプログラム

    重みと値と呼ばれる同じ長さの2つのリストがあり、別の値容量もあるとします。ここで、weights[i]とvalues[i]は、i番目のアイテムの重みと値を表します。最大で容量の重みを取得でき、アイテムごとに任意の数のコピーを取得できる場合は、取得できる最大の価値を見つける必要があります。 したがって、入力が重み=[1、2、3]、値=[1、5、3]、容量=5のような場合、出力は11になります。 これを解決するには、次の手順に従います- 関数dp()を定義します。これにはi、kが必要です iがウェイトのサイズと同じである場合、 0を返す ans:=dp(i + 1、k) =weig

  2. 辞書で2番目に大きい値を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 2つの整数が与えられているので、辞書に2番目に大きい値を出力する必要があります それでは、以下の実装の概念を見てみましょう- アプローチ1-負のインデックスによるsorted()関数の使用 例 #input example_dict ={"tutor":3, "tutorials":15, "point":9,"tutorialspoint":19} # sorting the given list and get the