6.编程找一个二维数组的鞍点,即该位置上的元素在该行上最大、在列上最小。
时间: 2024-11-20 18:37:53 浏览: 81
在编程中,找到一个二维数组(矩阵)中的鞍点通常涉及到遍历整个矩阵并检查当前元素是否满足条件:在同一行上是最大的,在同一列上是最小的。以下是使用Python的一个示例,这里假设输入是一个二维整数列表:
```python
def find_saddle_point(matrix):
if not matrix or not matrix[0]:
return None
row_max = [float('-inf')] * len(matrix)
col_min = [float('inf')] * len(matrix[0])
# 找出每一行的最大值
for i in range(len(matrix)):
row_max[i] = max(row_max[i], matrix[i][j] for j in range(len(matrix[0])))
# 找出每一列的最小值
for j in range(len(matrix[0])):
col_min[j] = min(col_min[j], matrix[i][j] for i in range(len(matrix)))
# 遍历矩阵寻找鞍点
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if matrix[i][j] == row_max[i] and matrix[i][j] == col_min[j]:
return i, j # 返回鞍点坐标
return None # 如果不存在鞍点,返回None
# 测试案例
matrix = [
[9, 8, 7],
[6, 5, 3],
[4, 1, 2]
]
saddle_point = find_saddle_point(matrix)
if saddle_point:
print(f"鞍点坐标为 ({saddle_point[0]}, {saddle_point[1]})")
else:
print("找不到鞍点")
```
在这个例子中,函数`find_saddle_point`首先初始化两维数组`row_max`和`col_min`分别记录每个行的最大值和每个列的最小值。然后,它遍历矩阵,如果发现某个元素既等于其所在行的最大值又等于其所在列的最小值,就找到了鞍点。
阅读全文