( 35分 ) 鞍点是指矩阵中的某元素A[i][j]是第i行中值最小的元素,同时又是第j列中值最大的元素。试设计一个算法求矩阵A中的所有鞍点。
时间: 2023-06-14 21:04:17 浏览: 137
如果矩阵A中存在这样的一个元素A[i][j]满足条件“A[i][j]是第i行中值最小的元素,且又是第j列中值最大的元素”,则称之为该矩阵的一个马鞍点。编写一个函数,计算出m*n的矩阵A的所有马鞍点
5星 · 资源好评率100%
算法如下:
1. 对于矩阵A中的每个元素A[i][j],找出第i行中的最小值min_row和第j列中的最大值max_col;
2. 如果A[i][j]既是最小值min_row,又是最大值max_col,则A[i][j]为鞍点,将其输出。
时间复杂度为O(n^3),其中n为矩阵的行数和列数。
以下是Python代码实现:
```python
def saddle_points(matrix):
saddle_points = []
for i in range(len(matrix)):
min_row = min(matrix[i])
for j in range(len(matrix[0])):
max_col = max([matrix[k][j] for k in range(len(matrix))])
if matrix[i][j] == min_row and matrix[i][j] == max_col:
saddle_points.append((i, j))
return saddle_points
```
其中,matrix是一个二维矩阵。函数返回一个列表,其中每个元素是一个元组,表示一个鞍点的坐标。
阅读全文