找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点
时间: 2024-06-02 17:03:25 浏览: 128
以下是找出一个二维数组中的鞍点的方法:
```python
# 定义一个函数,用于找出二维数组中的鞍点
def find_saddle_point(arr):
# 遍历每一行
for i in range(len(arr)):
# 找出该行的最大值及其索引
max_val = max(arr[i])
max_index = arr[i].index(max_val)
# 判断该最大值是否为该列的最小值
if max_val == min([arr[j][max_index] for j in range(len(arr))]):
return max_val, i, max_index
# 如果没有鞍点,则返回None
return None
# 测试数据1
arr1 = [[9, 80, 205, 40], [90, -60, 96, 1], [210, -3, 101, 89]]
result1 = find_saddle_point(arr1)
if result1:
print("鞍点的值为:{},所在的行为{},所在的列为{}".format(result1[0], result1[1], result1[2]))
else:
print("该二维数组中不存在鞍点")
# 测试数据2
arr2 = [[9, 80, 205, 40], [90, -60, 196, 1], [210, -3, 101, 89], [45, 54, 156, 7]]
result2 = find_saddle_point(arr2)
if result2:
print("鞍点的值为:{},所在的行为{},所在的列为{}".format(result2[0], result2[1], result2[2]))
else:
print("该二维数组中不存在鞍点")
```
输出结果为:
```
鞍点的值为:96,所在的行为1,所在的列为2
该二维数组中不存在鞍点
```
阅读全文