其实这道题可以用两个循环来解决。首先,我们可以逐行找到每一行的最大值,然后再逐列找到每一列的最小值。如果某个元素既是所在行的最大值又是所在列的最小值,那么就是一个鞍点。
下面是一个可能的解答: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=4print(find_saddle_point(matrix2)) # 输出:There is no saddle point
希望这个解答对你有帮助,如果还有其他问题,请继续提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |