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

各マンションの高さのマトリックスを見つけるプログラムは、Pythonで可能な最大の高さに増加しますか?


2D行列があるとします。ここで、行列[r、c]は都市のマンションの高さを表します。西東のスカイラインは、マトリックスの各行の最大値を取得することで表示されます。そして、南北のスカイラインは、各列の最大値を取ることによって見ることができます。西東と南北のスカイラインを同じに保ちながら、各マンションの高さを可能な限り高くする新しいマトリックスを見つける必要があります。

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

2 3 4
5 6 7
8 9 10


4 4 4
7 7 7
8 9 10

西東のスカイラインは[4、7、10]であり、南北のスカイラインは[8、9、10]です。スカイラインを変更せずに、最初の行のすべてを値4に、2番目の行のすべてを値7に増やすことができます。

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

  • r:=行列の各行の最大値のリスト

  • c:=行列の各列の最大値のリスト

  • 0から行列の行数までの範囲のiについては、次のようにします

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

      • r [i]

        • matrix [i、j]:=r [i]

      • それ以外の場合

        • matrix [i、j]:=c [j]

  • リターンマトリックス

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

class Solution:
   def solve(self, matrix):
      r = [max(i) for i in matrix]
      c = [max(i) for i in zip(*matrix)]
      for i in range(len(matrix)):
         for j in range(len(matrix[i])):
            if r[i] < c[j]:
               matrix[i][j] = r[i]
            else:
               matrix[i][j] = c[j]
      return matrix

ob = Solution()
matrix = [
   [2, 3, 4],
   [5, 6, 7],
   [8, 9, 10]
]
print(ob.solve(matrix))

入力

[[2, 3, 4],
[5, 6, 7],
[8, 9, 10]]

出力

[[4, 4, 4], [7, 7, 7], [8, 9, 10]]

  1. 行列の転置を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 行列が与えられた場合、転置を同じ行列に格納して表示する必要があります。 行列の転置は、行を列に、列を行に変更することで得られます。つまり、A行列の転置はA[i][j]をA[j][i]に変更することで得られます。 以下に示す実装を見てみましょう- 例 N = 4 def transpose(A):    for i in range(N):       for j in range(i+1, N):     &nbs

  2. 円柱の周囲を見つけるためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 −直径と高さを入力し、円柱の周囲長を求めます 周囲は円柱の側面図、つまり長方形に他なりません したがって、周囲長=2 *(h + d) ここで、dは円柱の直径です hは円柱の高さです それでは、実装を見てみましょう 例 # Function to calculate the perimeter of a cylinder def perimeter( diameter, height ) :    return 2 * ( diameter + height ) # ma