【问题标题】:C++ poker handrange combo removalC++ 扑克手牌组合移除
【发布时间】:2021-03-05 12:45:28
【问题描述】:

跟注范围存储在这样的函数中,其中 KK+ 表示口袋对子 KK 和更好的对子

const char* prw_preflop_ICMrange[] = { 
"AA+",
"KK+",
"KK+,AKs",
}

我想编写一个函数,将我自己持有的牌组合从对手范围中移除,例如:

我持有“Ac8d”,对手的范围是“KK+,AKs”,那么该函数应该循环遍历他的跟注范围,并从 AA 中删除 3 个组合,从 AK 中删除 1 个组合。同样,它应该循环遍历所有 Ax 和 8x 牌的可能性,并删除涉及 Ac 和 8d 的组合。 该函数应返回一个整数,其中包含我对手的实际跟注范围,例如:
(16 连击 - 4 连击)/(1326 连击 - 101 连击) = 0.0098 (他的跟注范围0.0121实际上是因为被移除而更窄)

你怎么能做到这样?

【问题讨论】:

  • 只有1326个陈述手,你可以简单地对其进行过滤。(erase_remove idiom)
  • std::vector<std::string> 可能是?它有一个.delete()

标签: c++ combinatorics poker


【解决方案1】:

创建一个生成所有组合的函数,然后使用该函数用生成的值填充std::vector<std::string> 的实例。

使用预先填充的向量作为返回组合计数的函数的输入。函数不应从列表中删除任何内容,只计算满足条件的出现次数,因为您对所有组合不感兴趣,而是对组合的数量感兴趣。

如果您真的想要组合,该函数应该构建一个新向量并将其返回,而不是从向量中删除值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 2011-04-19
    • 2015-10-01
    相关资源
    最近更新 更多