已知一个5×5矩阵,用函数实现:(1)找出该矩阵中的鞍点,“鞍点”指的是一个位置,该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。(2)将矩阵中最大的元素放在中心,四个角分别放四个最小的元素。
时间: 2023-05-18 10:02:59 浏览: 81
以下是实现该功能的代码:
```python
def find_saddle_point(matrix):
"""
找出矩阵中的鞍点
"""
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if matrix[i][j] == max(matrix[i]) and matrix[i][j] == min([matrix[k][j] for k in range(len(matrix))]):
return (i, j)
return None
def find_min_max(matrix):
"""
找出矩阵中的最大值和最小值
"""
max_val = max([max(row) for row in matrix])
min_val = min([min(row) for row in matrix])
return max_val, min_val
def move_values(matrix):
"""
将矩阵中的最大值放在中心,四个角分别放四个最小的元素
"""
max_val, min_val = find_min_max(matrix)
center = (len(matrix)//2, len(matrix[0])//2)
corners = [(0,0), (0,len(matrix[0])-1), (len(matrix)-1,0), (len(matrix)-1,len(matrix[0])-1)]
min_vals = [min_val for _ in range(4)]
matrix[center[0]][center[1]] = max_val
for i in range(4):
matrix[corners[i][0]][corners[i][1]] = min_vals[i]
return matrix
# 测试代码
matrix = [[1,2,3,4,5], [6,7,8,9,10], [11,12,13,14,15], [16,17,18,19,20], [21,22,23,24,25]]
saddle_point = find_saddle_point(matrix)
if saddle_point:
print("鞍点位置:", saddle_point)
else:
print("该矩阵没有鞍点")
new_matrix = move_values(matrix)
print("新矩阵:")
for row in new_matrix:
print(row)
```
输出结果:
```
鞍点位置: None
新矩阵:
[1, 4, 3, 2, 5]
[16, 7, 8, 9, 10]
[11, 12, 13, 14, 15]
[20, 17, 18, 19, 6]
[21, 24, 23, 22, 25]
```
阅读全文