小编dpm*_*min的帖子

用于在纸牌游戏中快速匹配的数据结构

在玩交易卡游戏时,我经常想知道什么是最有效的数据结构来处理以下问题.

在这样的游戏中,我面对的是一个包含N张牌(N~30..60..100)的牌组的对手,每张牌都是从可能的M牌类型中选出的(M~通常是1000..10000s).卡通常不需要是唯一的,即可以有重复的卡类型.在比赛之前,对手牌组的内容是未知的.

随着游戏的开始和进展,我慢慢地逐卡学习,这是对手使用的牌.有一个数据集包括之前看到的甲板的K(K~通常为100000..100000s)的全部内容.我想使用在特定游戏中获得的逐渐增加的样本来查询该数据集,以制作对手使用的可能甲板的排序列表.

鉴于对合理现代硬件(即可用的几千兆字节RAM)的上述限制,进行此类查询的最有效数据结构是什么?

一个很小的例子

  • 可能的卡类型= [1..10]
  • 已知K甲板:

    d1 = [1, 4, 6, 3, 4]
    d2 = [5, 3, 3, 9, 5]
    d3 = [5, 10, 4, 10, 1]
    d4 = [3, 7, 1, 8, 5]
    
    Run Code Online (Sandbox Code Playgroud)
  • 在第1轮,我透露对手使用卡#5; 因此,我的候选人名单减少到:

    d2 = [5, 3, 3, 9, 5] - score 2
    d3 = [5, 10, 4, 10, 1] - score 1
    d4 = [3, 7, 1, 8, 5] - score 1
    
    Run Code Online (Sandbox Code Playgroud)

    d2在结果中排​​名高于其余部分,因为该套牌中有双5,所以它可能更有可能是

  • 在第2轮,我透露对手使用卡#1; 候选人名单减至:

    d3 = [5, 10, 4, 10, 1] …
    Run Code Online (Sandbox Code Playgroud)

algorithm computer-science data-structures

7
推荐指数
1
解决办法
524
查看次数