如何解决C++ 扑克手串组合移除
跟注范围存储在这样的函数中,其中 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 跟注范围实际上由于弃牌而更窄)
你怎么能做到这样的事情?
解决方法
创建一个生成所有组合的函数,然后使用该函数用生成的值填充 std::vector<std::string>
的实例。
使用预先填充的向量作为返回组合计数的函数的输入。函数不应从列表中删除任何内容,只计算满足条件的出现次数,因为您对所有组合不感兴趣,而是对组合数量感兴趣。
如果你真的想要组合,函数应该构建一个新的向量并返回它,而不是从向量中删除值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。