Python程式:查詢矩陣中包含最大值的單元格


假設有一個n x n的矩陣,初始值為0。現在給定一個列表,其中包含一些對,每個對包含一個特定的行號和列號。對於列表中的每個元素i,如果矩陣的行號和列號都小於元素i的行值和列值,則矩陣中對應單元格的值加1。遍歷完所有列表元素後,我們需要找到矩陣中包含最大值的單元格數量。(行和列索引從0開始)

因此,如果輸入類似於input_list = [[3, 5], [4, 6], [5, 3]],則輸出為9。假設這是一個5 x 6的矩陣。最初矩陣中的值為

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 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 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 := min(xpos, item[0])
      • ypos := min(ypos, item[1])
  • 返回(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

更新於: 2021年10月23日

223 次瀏覽

開啟您的 職業生涯

完成課程獲得認證

立即開始
廣告