yangzhixiaohuli 发表于 2023-12-26 13:46:57

找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能...

【问题描述】

找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能没有鞍点)


【输入形式】

数组


【输出形式】

输出鞍点坐标及数值,或者输出无鞍点


【样例输入】

1 2 4

2 4 8

3 6 12


【样例输出】

Saddle point:a=4



【样例输入】

1 2 4

2 9 3

3 6 12


【样例输出】

There is no saddle point



【样例说明】




【评分标准】

输入上述两个二维数组,判断输出是否一致,以及核心代码是否使用二维数组。



这题怎么写

FishC 发表于 2023-12-26 13:47:19

其实这道题可以用两个循环来解决。首先,我们可以逐行找到每一行的最大值,然后再逐列找到每一列的最小值。如果某个元素既是所在行的最大值又是所在列的最小值,那么就是一个鞍点。

下面是一个可能的解答:

def find_saddle_point(matrix):
    rows = len(matrix)
    cols = len(matrix)

    for i in range(rows):
      row_max = matrix
      col_index = 0

      # 找到当前行的最大值
      for j in range(1, cols):
            if matrix > row_max:
                row_max = matrix
                col_index = j

      # 判断该最大值是否为该列的最小值
      col_min = matrix
      for k in range(1, rows):
            if matrix < col_min:
                col_min = matrix

      # 如果满足条件,则输出鞍点
      if row_max == col_min:
            return "Saddle point: a={}".format(row_max)

    # 没有鞍点
    return "There is no saddle point"

然后我们可以测试一下:

matrix1 = [
    ,
    ,
   
]

matrix2 = [
    ,
    ,
   
]

print(find_saddle_point(matrix1))# 输出:Saddle point: a=4
print(find_saddle_point(matrix2))# 输出:There is no saddle point

希望这个解答对你有帮助,如果还有其他问题,请继续提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能...