2023年8月1日发(作者:)
【Python实现背包问题的贪⼼算法】Python实现背包问题的贪⼼算法问题描述现有N个物品,背包容量W,各个物品的重量数组w[],价值数组p[]。物品可选择部分装⼊,求背包价值最⼤的装法解题思路由于物品可选择部分装⼊,该问题并⾮0-1背包问题,因此可选择贪⼼算法求解。将物品按单位重量的价值从⼤到⼩排序,依次装⼊背包。代码// An highlighted blockN,W=[int(item) for item in input().split(' ')]w=[]p=[]w_p=[]for i in range(N): temp_w,temp_p=input().split(' ') (int(temp_w)) (int(temp_p)) w_(int(temp_p)/int(temp_w))for i in range(N): max_index=i for j in range(i+1,N): if w_p[j]>w_p[max_index]: max_index=j if max_index!=i: w_p[i], w_p[max_index] = w_p[max_index], w_p[i] w[i], w[max_index] = w[max_index], w[i] p[i],p[max_index]=p[max_index],p[i]curr_w=0index=0max_p=0while index
2023年8月1日发(作者:)
【Python实现背包问题的贪⼼算法】Python实现背包问题的贪⼼算法问题描述现有N个物品,背包容量W,各个物品的重量数组w[],价值数组p[]。物品可选择部分装⼊,求背包价值最⼤的装法解题思路由于物品可选择部分装⼊,该问题并⾮0-1背包问题,因此可选择贪⼼算法求解。将物品按单位重量的价值从⼤到⼩排序,依次装⼊背包。代码// An highlighted blockN,W=[int(item) for item in input().split(' ')]w=[]p=[]w_p=[]for i in range(N): temp_w,temp_p=input().split(' ') (int(temp_w)) (int(temp_p)) w_(int(temp_p)/int(temp_w))for i in range(N): max_index=i for j in range(i+1,N): if w_p[j]>w_p[max_index]: max_index=j if max_index!=i: w_p[i], w_p[max_index] = w_p[max_index], w_p[i] w[i], w[max_index] = w[max_index], w[i] p[i],p[max_index]=p[max_index],p[i]curr_w=0index=0max_p=0while index
发布评论