我有组合卡片组(52)的记录历史,现在我想找到历史记录中最常出现的组合。
我可以迭代每张卡片/号码,并检查历史记录中的组合,但这不是有效的算法,因此我正在寻找从历史中寻找组合的最常用方法。
假设我在表格中有历史记录:
AKJ
JKQ
AKK
AJJ
A123
AKJ
AKQ
A234
AKQ
AKQ
AKQ
类似于所有卡
现在我想在上面的AKQ -4曲调中获得大多数A组合 -
同样适用于所有卡
我已尝试使用foreach卡迭代历史记录并将组合合并到列表中并获得计数但这样效率很低
我想知道最匹配的模式是什么,我需要使用集合以及如何使用集合?
答案 0 :(得分:0)
如果我建议您的问题是正确的,那么您希望获得历史记录中每张卡片的使用次数。 你能做的是:
为了在这里赢得表现,可以查看实际最大数量并查看历史记录中仍有多少张牌。 如果你只是想知道你完成的那种卡。 如果你想知道计数,你必须遍历所有的牌。
答案 1 :(得分:0)
根据我的理解,您正在尝试获取特定卡/号码最常见的组合计数。 如果数字存在于组合中的任何位置,则组合将与数字匹配。
我认为为了不断发展的历史有效地回答这类问题,您可以使用图表来模拟历史。 该图将是二分(2种类型的节点)。一种类型的节点是每个单独的数字(其中13个),另一种类型的节点将是历史中存在的唯一组合。
每个组合节点将连接到组合中存在的所有数字。每个组合节点也将具有其频率的计数。
在您的示例中,节点A将连接到AKJ(2次),AKK(1次),AJJ(1次),A123(1次),A234次(1次)和AKQ(4次)。
每当组合发生时,您可以检查它是否已经存在于图形中(使用哈希表)。如果存在,则增加其计数。否则,为它添加一个新的组合节点并将其连接到其中的数字。
使用此图表,您可以通过迭代其邻居来查询匹配任何数字的组合,并找到具有最高频率的邻居(组合)。所以对于A,从其邻居列表中,最常见的是AKQ。