我有如下数据结构
from数组是我可以使用的材料列表,其中name是每个材料的名字,num是材料的数量
target数组中是可以使用材料制作的组合配方,其中composition是配方的组合,每个材料最多一次,value是该配方的收益
现在需要使用提供的材料制作出不同的组合,材料不需要全部用掉,组合可以重复使用,也不用全部结合
请问怎么编写程序求出最大收益呢?
我有如下数据结构
from数组是我可以使用的材料列表,其中name是每个材料的名字,num是材料的数量
target数组中是可以使用材料制作的组合配方,其中composition是配方的组合,每个材料最多一次,value是该配方的收益
现在需要使用提供的材料制作出不同的组合,材料不需要全部用掉,组合可以重复使用,也不用全部结合
请问怎么编写程序求出最大收益呢?
13 回答12.7k 阅读
8 回答2.4k 阅读
2 回答5k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
5 回答797 阅读
3 回答2.1k 阅读
5 回答1k 阅读✓ 已解决
这个问题应该可以使用贪婪算法(可能我想的不够全面);
将
target
进行排序,排序标准是平均价格排序,也就是使用value / composition.length
,求出每个材料平均收益最大的放在前面,如果最大收益相同,再按照composition.length
小的排在前面,换而言之,就是将使用最少材料的最大收益先优先制作出来。代码如下: