python 贪心算法解决分数背包问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 贪心算法解决分数背包问题相关的知识,希望对你有一定的参考价值。

# Uses python3
import sys

def get_optimal_value(capacity, weights, values):
    value = 0
    average_value = [values / weights for values, weights in zip(values, weights)]
    combined_list = zip(average_value, values, weights)
    sorted_combined_list = sorted(combined_list, reverse = True)
    for item in sorted_combined_list:
        if item[2] > capacity:
            value = value + capacity/item[2]*item[1]
            capacity = 0
        else:
            capacity = capacity - item[2]
            value = value + item[1]
    return value

m = sys.stdin.read()
data = list(map(int, m.split()))
n, capacity = data[0:2]
values = data[2:(2 * n + 2):2]
weights = data[3:(2 * n + 2):2]
opt_value = get_optimal_value(capacity, weights, values)
print("{:.4f}".format(opt_value))

以上是关于python 贪心算法解决分数背包问题的主要内容,如果未能解决你的问题,请参考以下文章

用动态规划求解分数背包问题

贪心算法:背包问题

使用贪心python算法解决背包问题

算法贪心算法(0-1背包问题)

贪心算法解决背包问题?

算法导论——贪心算法