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