好的......所以我有一个棘手的问题(至少对我来说)。
我有一个简单对象的列表,我需要弄清楚如何找到利用最大数量的组合。这些对象的类中的每一个都有一个属性(字符串)作为它们的名称,一个属性(列表)用于它们喜欢与之结合的其他元素的名称,以及一个属性(列表)用于它们所使用的其他元素的名称不喜欢绑定。
如果一个元素被添加到一个集合中,其中该特定元素“喜欢”该集合中已经存在的一个(或多个)其他元素,则添加的元素为它喜欢的集合中的每个项目返回 +1 的分数。同样,对于添加的元素不喜欢的集合中的每个其他元素,都会返回 -1 的分数。将所有元素添加到最终集合后,每个元素的分数必须 >= 0。
我将如何找到可以使用的元素组合来返回最大的集合?如果多个组合返回相同数量的元素,则应返回所有可能的组合。
我希望这是有道理的......另外,我使用的是 C#(.NET 4.0),但可以使用任何编程语言,我只需要弄清楚它背后的逻辑。
在此先感谢,
桑尼