好吧...所以我有点棘手(至少对我来说)。寻找最大有效组合数的算法?
我有简单的对象列表,我需要弄清楚如何找到一个组合,使得使用的最大数量。这些对象的每个类都有一个名称属性(字符串),一个属性(List)用于他们想要绑定的其他元素名称,还有一个属性(List)用于其他元素的名称不喜欢结合。
如果一个元素被添加到集合,其中该特定元素“喜欢”已经在其它元件的集合中的一个(或多个),则添加的元素集合中返回一个得分的1对每个项目,它喜欢。同样,对于添加元素不喜欢的集合中的每个其他元素,都会返回-1的分数。将所有的元素,最终收集之后,比分为每个必须> = 0
我怎么会去寻找元素的组合(S)我可以使用,将返回最大的集?如果多个组合返回相同数量的元素,则应返回所有可能的组合。
我希望是有道理的......另外,我使用C#(.NET 4.0),但可以使用任何编程语言,我只需要弄清楚一个道理。
由于提前,
桑尼
是否有对象的有限集合,或者你正在寻找对象的具体范围是多少?一个对象可以在一个集合中重复吗? – jball
此外,是否为每件商品预先确定并固定了“喜欢”和“不喜欢”列表,并且它们对于所有商品的长度是否相同?如果长度不同,您可以尝试按照流行度对项目进行排序,然后再添加它们。 –
关系是对称的吗?我的意思是如果A喜欢B,是否意味着B喜欢A,如果A不喜欢B,是否意味着B不喜欢A? –