python求二维数组的鞍点
时间: 2023-07-26 21:15:54 浏览: 138
在二维数组中,鞍点是指在该行上最大的元素,在该列上最小的元素。以下是一个Python程序来查找二维数组的鞍点:
```python
def saddle_point(arr):
# 遍历每一行
for i in range(len(arr)):
# 找到该行的最大值和它的索引
row_max = max(arr[i])
col_index = arr[i].index(row_max)
# 检查该列是否是该列上的最小值
col = [arr[j][col_index] for j in range(len(arr))]
if row_max == min(col):
return (i, col_index)
return None
```
这个函数接收一个二维数组作为参数,并返回鞍点的索引。如果没有鞍点,则返回None。
相关问题
找出一个二维数组鞍点
找出一个二维数组中的“鞍点”是指找到数组中的元素,它既不是最大值也不是最小值,即它的值大于其左边和上方的元素,同时小于其右边和下方的元素。在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("未找到鞍点")
求一个三行三列的二维数组的鞍点,要求该二维数组从键盘输入赋值,鞍点即该位置上的元素在该行上最大,在该列上最小,一个二维数组有可能有多个鞍点,当然也可能没有鞍点
以下是Python代码实现:
```python
# 从键盘输入三行三列的二维数组
arr = []
for i in range(3):
row = list(map(int, input().split()))
arr.append(row)
# 查找鞍点
saddle_points = []
for i in range(3):
for j in range(3):
if arr[i][j] == max(arr[i]) and arr[i][j] == min([arr[k][j] for k in range(3)]):
saddle_points.append((i, j))
# 输出鞍点
if saddle_points:
print("该二维数组的鞍点为:")
for point in saddle_points:
print(f"({point[0]}, {point[1]})")
else:
print("该二维数组没有鞍点")
```
示例输入:
```
1 2 3
4 5 6
7 8 9
```
示例输出:
```
该二维数组的鞍点为:
(0, 2)
```
阅读全文