8-8 【Python0009】查找鞍点
分数 10
作者 doublebest
单位 石家庄铁道大学

【题目描述】对于给定5X5的整数矩阵,设计算法查找出所有的鞍点的信息(包括鞍点的值和行、列坐标,坐标从1开始)。
提示:鞍点的特点:列上最小,行上最大。
【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。
【输入格式】输入5行5列整数,同行数据间以空格为间隔。
【输出格式】在一行中以以下格式输出矩阵中的所有鞍点,每个鞍点的显示格式为:
[<鞍点的行坐标>,<鞍点的列坐标>,<鞍点的值>]
【输入样例】11 3 5 6 9
12 4 7 8 10
10 5 6 9 11
8 6 4 7 8
15 10 11 20 25
【输出样例】[4,1,8][4,5,8]

 

def find_saddle_points(matrix):

 

"""

 

在给定的 5x5 整数矩阵中查找所有的鞍点

 

 

 

参数:

 

matrix (list): 5x5 整数矩阵

 

 

 

返回:

 

list: 包含所有鞍点信息的列表,每个元素为一个三元组 (行坐标, 列坐标, 值)

 

"""

 

saddle_points = \[\]

 

 

 

for i in range(5):

 

for j in range(5):

 

# 检查当前元素是否为鞍点

 

is_saddle = True

 

 

 

# 检查当前元素是否为行上最大值

 

if max(matrix\[i\]) != matrix\[i\]\[j\]:

 

is_saddle = False

 

 

 

# 检查当前元素是否为列上最小值

 

if min(\[row\[j\] for row in matrix\]) != matrix\[i\]\[j\]:

 

is_saddle = False

 

 

 

if is_saddle:

 

saddle_points.append((i + 1, j + 1, matrix\[i\]\[j\]))

 

 

 

return saddle_points

 

\# 获取用户输入

 

matrix = \[\]

 

for \_ in range(5):

 

row = list(map(int, input("请输入一行 5 个整数: ").split()))

 

matrix.append(row)

 

\# 查找鞍点并输出结果

 

saddle_points = find_saddle_points(matrix)

 

if saddle_points:

 

print(", ".join(f"\[{x},{y},{z}\]" for x, y, z in saddle_points))

 

else:

 

print("没有找到鞍点")

 代码量 50
时间 0.5小时