|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
【问题描述】
找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能没有鞍点)
【输入形式】
数组
【输出形式】
输出鞍点坐标及数值,或者输出无鞍点
【样例输入】
1 2 4
2 4 8
3 6 12
【样例输出】
Saddle point:a[0][2]=4
【样例输入】
1 2 4
2 9 3
3 6 12
【样例输出】
There is no saddle point
【样例说明】
无
【评分标准】
输入上述两个二维数组,判断输出是否一致,以及核心代码是否使用二维数组。
这题怎么写
其实这道题可以用两个循环来解决。首先,我们可以逐行找到每一行的最大值,然后再逐列找到每一列的最小值。如果某个元素既是所在行的最大值又是所在列的最小值,那么就是一个鞍点。
下面是一个可能的解答:
- 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 小助理,如未能正确解答您的问题,请继续追问。
|
|