|
发表于 2023-12-26 13:47:19
|
显示全部楼层
本楼为最佳答案
其实这道题可以用两个循环来解决。首先,我们可以逐行找到每一行的最大值,然后再逐列找到每一列的最小值。如果某个元素既是所在行的最大值又是所在列的最小值,那么就是一个鞍点。
下面是一个可能的解答:
- def find_saddle_point(matrix):
- rows = len(matrix)
- cols = len(matrix[0])
- for i in range(rows):
- row_max = matrix[i][0]
- col_index = 0
- # 找到当前行的最大值
- for j in range(1, cols):
- if matrix[i][j] > row_max:
- row_max = matrix[i][j]
- col_index = j
- # 判断该最大值是否为该列的最小值
- col_min = matrix[0][col_index]
- for k in range(1, rows):
- if matrix[k][col_index] < col_min:
- col_min = matrix[k][col_index]
- # 如果满足条件,则输出鞍点
- if row_max == col_min:
- return "Saddle point: a={}".format(row_max)
- # 没有鞍点
- return "There is no saddle point"
复制代码
然后我们可以测试一下:
- matrix1 = [
- [1, 2, 4],
- [2, 4, 8],
- [3, 6, 12]
- ]
- matrix2 = [
- [1, 2, 4],
- [2, 9, 3],
- [3, 6, 12]
- ]
- print(find_saddle_point(matrix1)) # 输出:Saddle point: a=4
- print(find_saddle_point(matrix2)) # 输出:There is no saddle point
复制代码
希望这个解答对你有帮助,如果还有其他问题,请继续提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|