找出一个4x4二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小(不会出现重复数字的情况)。可能没有鞍点。
时间: 2023-11-06 10:17:59 浏览: 91
C语言程序设计-求一个二维数组中的鞍点
5星 · 资源好评率100%
假设给定的二维数组为 `arr`,我们可以按照以下步骤找到鞍点:
1. 对于每一行,找到该行的最大值及其列号。
2. 对于每一列,找到该列的最小值及其行号。
3. 遍历每个元素 `(i,j)`,如果 `arr[i][j]` 是其所在行的最大值,且是其所在列的最小值,则 `(i,j)` 是一个鞍点。
以下是一个 Python 代码实现:
```python
def find_saddle_point(arr):
rows, cols = len(arr), len(arr[0])
row_max = [max(row) for row in arr]
col_min = [min([arr[i][j] for i in range(rows)]) for j in range(cols)]
saddle_points = []
for i in range(rows):
for j in range(cols):
if arr[i][j] == row_max[i] and arr[i][j] == col_min[j]:
saddle_points.append((i,j))
return saddle_points if saddle_points else None
```
其中,`row_max` 是一个列表,存储每一行的最大值;`col_min` 是一个列表,存储每一列的最小值。最后,我们遍历每个元素,判断是否是鞍点,将所有的鞍点存储在列表 `saddle_points` 中返回。如果没有鞍点,返回 `None`。
阅读全文