# 获取用户输入的箱数和马车的最大承受重量 box_count = int(input('箱数: ')) max_capacity = int(input('最大承受重量: ')) # 初始化列表,用于存储每箱的单位重量价值和详细信息 unit_value_list = [] box_details_list = [] # 循环获取每个箱子的总价值和总重量,并计算单位重量价值 for i in range(1, box_count + 1): box_value = int(input(f'第{i}箱的总价值: ')) box_weight = int(input(f'第{i}箱的总重量: ')) unit_value = round(box_value / box_weight, 1) # 计算每箱单位重量的价值 unit_value_list.append(unit_value) # 添加到列表,用于之后做比较 box_details_list.append([box_weight, unit_value, 0]) # 添加箱子详细信息 # 对单位重量价值进行降序排列 unit_value_list.sort(reverse=True) # 初始化总价值和当前总重量 total_value = 0 current_weight = 0 # 遍历排序后的单位重量价值列表 for i in range(len(unit_value_list)): for k in range(len(box_details_list)): if box_details_list[k][2] == 0: # 如果箱子未被取走 if unit_value_list[i] == box_details_list[k][1]: # 如果找到对应的箱子 # 尝试添加当前箱子的重量 temp_weight = current_weight + box_details_list[k][0] if temp_weight > max_capacity: # 如果超过最大承受重量 # 减少重量直到不超过最大承受重量 while temp_weight > max_capacity: box_details_list[k][0] -= 1 temp_weight -= 1 current_weight = temp_weight # 更新当前总重量 total_value += box_details_list[k][0] * unit_value_list[i] # 更新总价值 box_details_list[k][2] = 1 # 标记箱子已被取走 break # 跳出内层循环 # 输出能带走的糖果的最大价值 print(f'能带走的糖果的最大价值为: {total_value}') 输出结果:标签:box,圣诞节,weight,--,list,value,算法,details,unit From: https://blog.csdn.net/qq_68809241/article/details/143857834