找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能...
【问题描述】找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能没有鞍点)
【输入形式】
数组
【输出形式】
输出鞍点坐标及数值,或者输出无鞍点
【样例输入】
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
【样例说明】
无
【评分标准】
输入上述两个二维数组,判断输出是否一致,以及核心代码是否使用二维数组。
这题怎么写 其实这道题可以用两个循环来解决。首先,我们可以逐行找到每一行的最大值,然后再逐列找到每一列的最小值。如果某个元素既是所在行的最大值又是所在列的最小值,那么就是一个鞍点。
下面是一个可能的解答:
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]