java - 需要帮助了解德州扑克游戏

标签 java algorithm

在德州扑克中, table 上有两张 7 张牌、两张底牌和 5 张牌。有人可以指出确定玩家手牌评估的算法(需要如何完成)。我创建了两个列表

List<Card> holeCards = new Arraylist(); // 2S 5H two cards for a player
List<Card> cardsOnTable = new Arraylist(); // 6C AS 5C 7D 6D cards on table
List <Card> allCards = new Arraylist();
allCards.addall(holeCards);
allCards.addall(cardsOnTable); // AS 7D 6C 6D 5C 5H 2S -- after sorting cards in descending order

我应该如何从排序列表中挑选前五张牌来确定手牌评估员。我看过德州扑克的一些例子,但我无法清楚地理解如何解决这个问题

最佳答案

您不能立即消除 2 张牌,最低的 5 张牌可以形成同花,而最高的一张则是葫芦。

就我个人而言,我会评估 7 张牌(手牌加上 5 张牌 table 上的牌)中的每种手牌

首先从最高排名开始(同花顺,这意味着您可以同时检查同花顺和同花顺),(您可以改进这些方法中的每一个以提高速度)

  1. 检查是否同花(循环遍历数组,并计算每个花色的实例),如果有人命中 5,则您有同花

  2. 检查 Straight - 按时间顺序对数组进行排序,看看数组中的下一个整数是否在后面

  3. 然后制作所有卡片的直方图,(检查每个数字出现了多少次) 如果你有 4,1,1,1 或 4,2,1 你有 4 个 3,2,1,1 或 3,2,2 你有一个完整的房子 3,1,1,1,1一组 2,2,1,1,1 2对 2,1,1,1,1,1一对 1,1,1,1,1,1,1, 高牌

一旦您知道自己的最佳手牌是什么,您就可以选出最好的 5 张牌。他们将此与另一只手进行比较

关于java - 需要帮助了解德州扑克游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52575356/

相关文章:

c - 五子棋:限时搜索

c++ - 如何用 O(n) 时间和 O(1) 空间对包含 n 个对象的组进行排序。每个对象有两个字段 : int and string.

java - IBM Bluemix Liberty for Java 公共(public)可访问目录

java - 为什么 Spring Around 建议可以吞下或停止传播目标方法抛出的异常?

java - 快速简便地测试 OSGi 包的方法

algorithm - 舰队作战策略游戏AI

c# - .NET 几何库

java - 阻止集成测试端口

java - 无法从计划的执行程序服务设置 boolean 标志

c++ - 找到最小的整数,其数字的平方和与给定的数字相加