在德州扑克中,玩家桌上有2张7张牌,2张底牌和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
我应该如何从排序列表中挑选前五张牌来确定一名手牌评估者。我已经看过一些德克萨斯扑克的例子,但我无法清楚地理解如何解决这个问题
答案 0 :(得分:2)
您不能立即淘汰2张牌,最低的5张牌可以进行同花顺,而最高的5张牌可以满座。
我个人会从7张牌(每手加5张牌在桌子上)中评估每种牌型
首先从排名最高的位置开始(直线冲洗,这意味着您可以同时检查直线和冲洗),(您可以改进这些方法中的每一种,以便稍后提高速度)
检查是否有同花(在数组中循环,并计数每套衣服的实例),如果命中5,则有同花
检查直线度-按时间顺序对数组进行排序,看看数组中的下一个int是否紧随其后
然后对所有卡进行直方图处理(检查每个数字出现多少次) 如果您有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,1高卡
一旦您知道自己的最佳手牌,便可以选出最好的5张牌。他们将其与另一只手进行比较