在Python中找出矩阵中包含最大值的单元格的程序
假设有一个初始化为0的anxn矩阵。现在,给出了一个列表,它包含一些包含特定行和列位置的对。对于列表中的每个项目i,当行号和列号小于列表中项目i的行值和列值时,单元格的内容增加1。在遍历完所有列表元素后,我们必须找出矩阵中包含最大值的单元格数。(行和列索引从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 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个单元格包含该值。
示例
让我们看看以下实现以获得更好的理解-
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