对食品和配料进行分组的算法正确吗?

时间:2018-08-04 10:18:08

标签: algorithm data-structures

问题

给出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”)


我想到的解决方案是计算成分的所有子序列,将它们分配到组中,然后在组中添加适当的食物。但是,这似乎不是正确的算法。

2 个答案:

答案 0 :(得分:2)

我想我可以帮忙,但是您的问题尚不清楚是什么对您“最小化”以及“ ..涵盖”对您意味着什么。

在您的示例中,如果您只考虑了前两个组

食品1

食品2

似乎所有食品都包括在内,所有成分也包括在内,“ a” +“ b”在第一组中,而“ c”在第二组中。我在这里想念的是您添加了第三组吗?

谢谢

答案 1 :(得分:1)

最简单的方法是:

  1. 为每种成分创建一个组。
  2. 将所有包含该成分的食品放入这些组中。
  3. 检查两个不同的组是否包含相同的食品,将它们加入在一起。
  4. 重复进行,直到没有两个食品组完全相同。