若矩阵中的某个元素是第i行中的最小值,同时又是第j列中的最大值,则称此元素为该矩阵中的一个马鞍点。假设以二维数组存储矩阵,试编写算法求出矩阵中的所有马鞍点。
时间: 2023-04-18 19:01:08 浏览: 97
算法步骤:
1. 遍历矩阵中的每一个元素,找到第i行中的最小值和第j列中的最大值。
2. 如果该元素既是第i行中的最小值,又是第j列中的最大值,则该元素是一个马鞍点,将其记录下来。
3. 继续遍历矩阵中的下一个元素,重复步骤1和2,直到遍历完整个矩阵。
4. 返回所有马鞍点的坐标。
算法实现:
```
def find_saddle_points(matrix):
saddle_points = []
for i in range(len(matrix)):
for j in range(len(matrix[])):
row_min = min(matrix[i])
col_max = max([matrix[k][j] for k in range(len(matrix))])
if matrix[i][j] == row_min and matrix[i][j] == col_max:
saddle_points.append((i, j))
return saddle_points
```
其中,`matrix`为二维数组表示的矩阵,返回值为所有马鞍点的坐标列表。
相关问题
若矩阵中的某个元素是第i行中的最小值,同时又是第j列中的最大值,则称此元素为该矩阵中的一个马鞍点。假设以二维数组存储矩阵,试编写算法求出矩阵中的所有马鞍点
算法如下:
1. 遍历矩阵中的每个元素,找出第i行中的最小值和第j列中的最大值。
2. 如果这个元素既是第i行中的最小值,又是第j列中的最大值,那么它就是一个马鞍点,将其记录下来。
3. 最后返回所有的马鞍点。
代码如下:
```python
def find_saddle_points(matrix):
saddle_points = []
for i in range(len(matrix)):
for j in range(len(matrix[0])):
row_min = min(matrix[i])
col_max = max([matrix[k][j] for k in range(len(matrix))])
if matrix[i][j] == row_min and matrix[i][j] == col_max:
saddle_points.append((i, j))
return saddle_points
```
其中,`matrix`是一个二维数组,返回的结果是一个包含所有马鞍点坐标的列表。
生成python代码:若矩阵中的某个元素是第i行中的最小值,同时又是第j列中的最大值,则称此元素为该矩阵中的一个马鞍点。假设以二维数组存储矩阵,试编写算法求出矩阵中的所有马鞍点
好的,这是一个编程问题,以下是解法:
```python
def saddle_point(matrix):
n = len(matrix)
m = len(matrix[0])
result = []
for i in range(n):
for j in range(m):
if matrix[i][j] == min(matrix[i]) and matrix[i][j] == max([matrix[x][j] for x in range(n)]):
result.append((i,j))
return result
```
该函数接受一个二维数组参数,返回元素为元组的数组,元组第一个值为行数,第二个值为列数,这些元组表示该矩阵中的所有马鞍点。
阅读全文