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等于0,则
- 返回(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
广告