增補部落格 第二十一篇 python 查詢鞍點

财神给你送元宝發表於2024-06-14

【題目描述】對於給定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):
    saddle_points = []
    for i in range(len(matrix)):
        row_max = max(matrix[i])
        max_indexes = [index for index, value in enumerate(matrix[i]) if value == row_max]
        for j in max_indexes:
            column_values = [matrix[row][j] for row in range(len(matrix))]
            if matrix[i][j] == min(column_values):
                saddle_points.append((matrix[i][j], i+1, j+1))
    return saddle_points

# 使用者輸入矩陣
print("請輸入一個5x5的整數矩陣:")
user_matrix = []
for i in range(5):
    row = list(map(int, input().split()))
    user_matrix.append(row)

saddle_points = find_saddle_points(user_matrix)
if saddle_points:
    print("鞍點資訊:")
    for point in saddle_points:
        print(f"值:{point[0]},行座標:{point[1]},列座標:{point[2]}")
else:
    print("沒有找到鞍點。")

  

相關文章