import numpy as np while True: try: #一開始告訴我的 j = int(input()) #有幾個值(不包含標籤) i = int(input()) #有幾行拿來當判別的值的值 previous_data = [] for _ in range(i): row_data = input().split(',') numbers = [float(num) for num in row_data[:j]] string_value = row_data[-1] previous_data.append((numbers, string_value)) #我要判斷的 p = int(input()) #拿來判斷是甚麼標籤的行數 new_data = [] for _ in range(p): row_data = input().split(',') numbers = [float(num) for num in row_data] new_data.append(numbers) #判斷ING closest_strings = [] for new_row in new_data: min_distance = float('inf') closest_string = "" for previous_row in previous_data: distance = np.linalg.norm(np.array(new_row) - np.array(previous_row[0])) #計算距離 if distance < min_distance: min_distance = distance closest_string = previous_row[1] closest_strings.append(closest_string) #輸出結果 for string_value in closest_strings: print(string_value) except EOFError: break
3 5 5.3,1.0,1.9,Cat 5.4,1.1,1.7,Cat 5.2,1.5,1.0,Cat 100.0,103.0,21.0,Dog 102.0,107.0,51.0,Dog 2 5.1,1.2,1.5 101.0,105.0,37.0