编辑代码

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()