我有两个结果,并希望得到这两个最好的“顺序”。 例如:
我们在一场比赛中有5人参赛,在另一场比赛中有7人参赛。结果是: 比赛1。
1. Karl
2. Fred
3. John
4. Peter
5. Sid
比赛2。
1. Steven
2. John
3. Karl
4. Peter
5. Aron
6. Fred
7. Kevin
questin是:这两场比赛的前7名是什么?
很明显,在这种情况下,nr 1是卡尔,因为他持有第一名和第三名,这比第二名和第三名更好。然而,史蒂文可能同样出色,但他只参加了一场比赛,并且应该受到某种惩罚。针对此问题的已知算法是什么?有什么简单的解决方案吗?我只是想不出来
答案 0 :(得分:2)
您可以将位置与权重相关联(将其视为点数) 例如,第一个位置的重量为20.第二个位置的重量为18个。第三个位置的重量等 参与未命中可能与-5的权重有关。 您可以根据需要调整数字。
要查找最终结果,请添加每个人的权重并比较数字。
我认为它应该有效..
答案 1 :(得分:1)
另一种方法是创建顶级节点的排序,这与先前种族的排序一致。这可以通过使用max-flow algorithm来完成。
答案 2 :(得分:0)
一个天真的解决方案是为所有玩家提供某种身份证明。浏览两个列表并将您遇到的任何新ID添加到单独的列表中,例如名为Positions。将这些ID的所有值设置为一个不能作为竞争位置的大数字,将其称为BIG_VAL(例如100)。浏览第一个列表并将所有位置标记为“位置”列表中的新值。这只是第一场比赛,所以这里没什么特别的。然后浏览第二个列表,将这些ID的第二个位置结果添加到“位置”列表中。对于未发生的ID,请在其结果中添加另一个BIG_VAL。列表现在将按顺序排列竞赛位置,剩下的就是对它们进行排序。 Karl将是4,John将是5,Fred将是8,依此类推: