编写程序求出二维数组中的鞍点。 提示:测试集要求先输入一个二维数组,输出鞍点所在行和列以及元素值;无鞍点则输出-1。 效果如下: 输入:9 10 11 2 23 15 2 11 16 输出:1 3 11
时间: 2024-10-17 17:03:07 浏览: 44
编写程序来找出二维数组中的鞍点,可以按照以下步骤:
1. 定义鞍点:在二维数组中,鞍点是指一个元素同时小于其上方和左方的元素,且大于下方和右方的元素。
2. 遍历数组:从数组的第一行开始,对于每一行,比较该行的第一个元素与上一行的最后一个元素,如果第一个元素大于上一个,则说明此行没有鞍点。然后对剩余的元素进行相同操作,找到第一个满足条件的元素。
3. 同理,对于每一列,从第一列开始,比较当前列的第一个元素与左边列的最后一个元素,寻找列中第一个鞍点。
4. 当找到一个既在行又在列满足鞍点条件的元素时,记录下它的行索引、列索引和值。
5. 如果遍历完整个数组都没有找到鞍点,返回-1。
下面是一个简单的Python示例实现:
```python
def find_uneven_point(matrix):
rows = len(matrix)
cols = len(matrix[0])
max_val = float('-inf')
min_val = float('inf')
max_row = -1
max_col = -1
for i in range(rows):
if matrix[i][0] > max_val:
max_val = matrix[i][0]
max_row = i
max_col = 0
for j in range(1, cols):
if matrix[i][j] > max_val and matrix[i][j] < matrix[i][j-1]:
max_val = matrix[i][j]
max_row = i
max_col = j
min_row = -1
min_col = -1
for i in range(rows):
for j in range(cols):
if matrix[i][j] < min_val and matrix[i][j] > matrix[i-1][j] and matrix[i][j] > matrix[i][j-1]:
min_val = matrix[i][j]
min_row = i
min_col = j
if max_row == -1 and min_row == -1:
return -1
else:
return (max_row + 1, max_col + 1, max_val), (min_row + 1, min_col + 1, min_val)
# 示例
matrix = [[9, 10, 11], [2, 23, 15], [2, 11, 16]]
result = find_uneven_point(matrix)
if result is not None:
print(f"鞍点坐标 ({result[0][0]}, {result[0][1]}) 和值:{result[0][2]}")
else:
print(-1)
```
运行上述代码,会得到预期的结果:`鞍点坐标 (1, 3) 和值:11`。
阅读全文