自定义函数找出二位矩阵的鞍点
时间: 2024-11-13 22:16:56 浏览: 88
鞍点是指在一个二维数组(矩阵)中,当前位置的值既不大于左邻域的最大值,也不小于右邻域的最大值,同时也不大于上邻域的最小值,也不小于下邻域的最小值。简单来说,就是矩阵中的局部极大值和极小值以外的点。
自定义函数找出二维矩阵的鞍点,通常涉及以下步骤:
1. 定义函数:创建一个名为`find_saddle_points`的函数,接受一个二维列表作为输入。
2. 初始化:设置两个变量,`min_row`和`max_col`分别用于记录当前找到的最小行和最大列索引,初始值设为矩阵的第一行和第一列。
3. 遍历矩阵:对于每个元素 `(i, j)`(从第二行到倒数第二行,第二列到倒数第二列),计算四个相邻位置的值:
- 上方:`matrix[i-1][j]`
- 左边:`matrix[i][j-1]`
- 右边:`matrix[i][j+1]`
- 下方:`matrix[i+1][j]`
4. 检查条件:如果当前位置的值大于左侧最大值并且小于右侧最大值,并且大于上方最小值并且小于下方最小值,那么它就是一个鞍点。更新 `min_row`, `max_col` 和鞍点列表。
5. 返回结果:遍历结束后,返回包含所有鞍点坐标 (row, col) 的列表。
下面是Python伪代码的一个示例:
```python
def find_saddle_points(matrix):
num_rows, num_cols = len(matrix), len(matrix[0])
min_row, max_col = 0, 0
saddle_points = []
for i in range(1, num_rows - 1): # 留出边界
for j in range(1, num_cols - 1):
left, right, up, down = matrix[i][j-1], matrix[i][j+1], matrix[i-1][j], matrix[i+1][j]
if matrix[i][j] < right and matrix[i][j] > left and matrix[i][j] > up and matrix[i][j] < down:
min_row, max_col = min(min_row, i), max(max_col, j)
saddle_points.append((i, j))
return saddle_points
# 示例
matrix = [[9, 8, 7], [6, 5, 4], [3, 2, 1]]
saddle_points = find_saddle_points(matrix)
```
阅读全文