检查赢得老虎机的所有排列组合的算法

3

我有一个程序,其中有一个具有5个列和每个列中有5张图片的老虎机。我正在尝试找到一种有效的算法,可以检查所有排列方式,以确定几种组合是否会获胜。这些组合是:2对匹配图像,3个相同的图像,4个相同的图像,5个相同的图像,最后是3个相同的图像和与前3个不同的2个相同的图像。我不关心顺序。感谢任何提示或建议。


1
这实际上与计算五张牌的扑克手牌(一对,两对,三条,四条,葫芦...)几乎完全相同。只是为了帮助您扩大搜索范围。 - Mark Peters
2个回答

3

使用字典/哈希表:

counts = {}
foreach image in row:
     // TODO: If the image is not already in the dictionary, add it.
    counts[image] += 1

然后,您可以通过遍历字典中的值来检查每个图像的数量。


2
你可以使用某种字典或哈希表数据结构(键/值对)来存储5个元素。当你枚举每一列时,将值加1(图像或者像Mark Byers所说的“唯一标识符”将成为键)。然后对你的键/值数据结构进行排序。接着,你可以按照上面的逻辑创建一个有限状态机来分类获胜情况。

+1:我改变了我的答案,几乎与你发布答案的时间相同。一开始我以为这是一些低级C代码,没有这样的数据结构,但坦白说,如果是这种情况,他应该明确说明。 - Mark Byers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接