在Python中找到矩阵中包含最大值的单元格的程序

在Python中找到矩阵中包含最大值的单元格的程序

假设有一个初始化为0的n x n矩阵。现在给定一个列表,其中包含一些包含特定行和列位置的对。对于列表中的每个项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:= (xpos, item [0])的最小值
      • ypos:= (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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程