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

Pythonの行列に最大値を含むセルを見つけるプログラム


0で初期化されたnxn行列があるとします。これで、リストが表示され、特定の行と列の位置を含むいくつかのペアが含まれます。リスト内のアイテムiごとに、セルの内容が1ずつ増加します。ここで、行番号と列番号は、リスト内のアイテムiの行値と列値よりも小さくなります。すべてのリスト要素をトラバースした後、最大値を含むマトリックス内のセルの数を見つける必要があります。 (行と列のインデックスは0から始まります)

したがって、入力がinput_list =[[3、5]、[4、6]、[5、3]]のようである場合、出力は9になります。5x6の行列であるとします。最初、マトリックスの値は

0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0

リストの最初の要素がトラバースされると、-

になります。
1 1 1 1 1 0
1 1 1 1 1 0
1 1 1 1 1 0
0 0 0 0 0 0
0 0 0 0 0 0

リストの2番目の要素をトラバースすると、-

になります。
2 2 2 2 2 1
2 2 2 2 2 1
2 2 2 2 2 1
1 1 1 1 1 1
0 0 0 0 0 0

リストの3番目の要素をトラバースすると、-

になります。
3 3 3 2 2 1
3 3 3 2 2 1
3 3 3 2 2 1
2 2 2 1 1 1
1 1 1 0 0 0

マトリックスの最大値は3で、値を含むセルは9つあります。

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

  • xpos:=0
  • ypos:=0
  • input_listの各項目について、
    • xposが0と同じ場合、
      • xpos:=item [0]
      • ypos:=item [1]
    • それ以外の場合、
      • xpos:=最小(xpos、item [0])
      • ypos:=最小(ypos、item [1])
  • return(xpos * ypos)

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

def solve(input_list):
   xpos = 0
   ypos = 0
   for item in input_list:
      if xpos == 0:
         xpos = item[0]
         ypos = item[1]
      else:
         xpos = min(xpos,item[0])
         ypos = min(ypos,item[1])
   return (xpos * ypos)

print(solve([[3, 5], [4, 6], [5, 3]]))

入力

[[3, 5], [4, 6], [5, 3]]

出力

9

  1. グラフがPythonのすべての人によってトラバース可能かどうかを確認するプログラム

    0からn-1までの番号が付けられたn個の頂点を含むグラフが与えられたとします。グラフは無向であり、各エッジには重みがあります。グラフには3種類の重みを設定でき、各重みは特定のタスクを示します。グラフをトラバースできるのは、ジャックとケーシーの2人です。エッジの重みが1の場合、ジャックはグラフをトラバースできます。重みが2の場合、ケーシーはグラフをトラバースできます。エッジの重みが3の場合、両方がグラフをトラバースできます。グラフを両方でトラバース可能にするために必要なエッジをすべて削除する必要があります。ジャックとケーシー。グラフをトラバース可能にするために削除するエッジの数を返します。トラバ

  2. 行列の転置を見つける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