问题
给出N个食品,每个食品都包含一组成分。有M种成分。
一个组由食品和成分组成,因此该组中的每个食品都包含该组中的所有成分。
问题是要使用食品和配料创建组,以便覆盖每种配料和一种食品(应该有一组对应于每种食品和配料的映射出现),并且要限制最小数量的食品。组已创建。
示例:
输入
N = 3,M = 3
成分(“ a”,“ b”,“ c”)
包含('a','b','c')成分的食品1。
包含('b','a')成分的食品2。
包含('a','b','c')成分的食品3。
输出
2个组
组1:((食品1,食品2,食品3)('a','b')
第2组:(食品1,食品2)(“ c”)
我想到的解决方案是计算成分的所有子序列,将它们分配到组中,然后在组中添加适当的食物。但是,这似乎不是正确的算法。
答案 0 :(得分:2)
我想我可以帮忙,但是您的问题尚不清楚是什么对您“最小化”以及“ ..涵盖”对您意味着什么。
在您的示例中,如果您只考虑了前两个组
食品1
食品2
似乎所有食品都包括在内,所有成分也包括在内,“ a” +“ b”在第一组中,而“ c”在第二组中。我在这里想念的是您添加了第三组吗?
谢谢
答案 1 :(得分:1)
最简单的方法是: