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 次浏览

开启您的 职业生涯

完成课程获得认证

立即开始
广告