找出一个二维数组鞍点
时间: 2024-09-19 15:12:53 浏览: 69
找出一个二维数组中的“鞍点”是指找到数组中的元素,它既不是最大值也不是最小值,即它的值大于其左边和上方的元素,同时小于其右边和下方的元素。在Python中,你可以通过遍历数组并比较相邻元素来实现这个过程。这里是一个简单的算法:
```python
def find_saddle_point(matrix):
rows = len(matrix)
cols = len(matrix[0])
# 初始化最大值和最小值及其位置
max_val = matrix[0][0]
min_val = matrix[0][0]
max_row = 0
max_col = 0
min_row = 0
min_col = 0
for i in range(1, rows):
if matrix[i][0] > max_val:
max_val = matrix[i][0]
max_row = i
if matrix[i][0] < min_val:
min_val = matrix[i][0]
min_row = i
for j in range(1, cols):
if matrix[0][j] > max_val:
max_val = matrix[0][j]
max_col = j
if matrix[0][j] < min_val:
min_val = matrix[0][j]
min_col = j
# 检查当前的max_row, max_col是否符合条件
if matrix[max_row][max_col] > matrix[max_row - 1][max_col] and \
matrix[max_row][max_col] > matrix[max_row][max_col - 1]:
return max_row, max_col
# 检查当前的min_row, min_col是否符合条件
if matrix[min_row][min_col] < matrix[min_row + 1][min_col] and \
matrix[min_row][min_col] < matrix[min_row][min_col + 1]:
return min_row, min_col
# 如果没有找到鞍点,返回None或False
return None # 或者 return False if not found
# 使用示例
matrix = [[9, 8, 7], [6, 5, 4], [3, 2, 1]]
saddle_point = find_saddle_point(matrix)
if saddle_point is not None:
print(f"鞍点坐标为:{saddle_point}")
else:
print("未找到鞍点")
阅读全文