def greedy_knapsack(capacity, weights, values, items):
n = len(weights)
unit_values = [(values[i] / weights[i], weights[i], values[i], items[i]) for i in range(n)]
unit_values.sort(reverse=True, key=lambda x: x[0])
total_value = 0
selected_items = []
current_weight = 0
for unit_value, weight, value, item in unit_values:
if current_weight + weight <= capacity:
selected_items.append(item)
total_value += value
current_weight += weight
return total_value, selected_items
def main():
capacity = 20
items = ["苹果", "香蕉", "橘子", "猕猴桃"]
weights = [15, 18, 10, 9]
values = [300, 180, 150, 270]
total_value, selected_items = greedy_knapsack(capacity, weights, values, items)
print(f"最大总价值为: {total_value}")
print(f"选择水果: {', '.join(selected_items)}")
if __name__ == "__main__":
main()