MATLAB大神求助

题目8:在扑克游戏中玩家1能赢多少局?在扑克游戏中,一局牌由五张牌组成,组成的牌的大小由低向高如下:HighCard:最高值的牌.OnePair:两张面值一样的牌(一对)... 题目8:在扑克游戏中玩家1能赢多少局?
在扑克游戏中,一局牌由五张牌组成,组成的牌的大小由低向高如下:
High Card: 最高值的牌.
One Pair: 两张面值一样的牌(一对).
Two Pairs: 两个值不同的对子(两对).
Three of a Kind: 三张面值一样的牌(三个头).
Straight: 所有的牌面值为连续数值(杂花顺).
Flush: 所有的牌花色相同(同花).
Full House: 三个头加一对(三带两)
Four of a Kind: 四张牌面值相同(炸弹).
Straight Flush: 所有的牌花色相同并且为连续数值(同花顺).
Royal Flush: 10,J,Q,K和A,并且为相同花色(通天)。
牌的面值大小排序如下:2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen, King, Ace.
如果两个玩家的牌具有同样的排序(上面介绍的几种),那么他们牌的大小由手中最大的牌决定。例如,一对8比一对5大(见下面例一);但是如果两个玩家都用一对Q,那么他们手中最大的牌就用来比较大小(见下面例四);如果他们最高面值的牌也相等,那么就用次高面值的牌比较,以此类推。
考虑下面的几个例子:

文件 poker.txt包含一千局随机牌。每一行包含十张牌(用空格分隔);前五张是玩家1的牌,后五张是玩家2的牌。所有的牌都是合理的(没有非法字符或者重复的牌)。每个玩家的牌没有顺序,并且每一局都有明确的输赢。
其中玩家1能赢多少局?
其中poker.txt的内容是(这个是要读取txt文件的):
8C TS KC 9H 4S 7D 2S 5D 3S AC
5C AD 5D AC 9C 7C 5H 8D TD KS
3H 7H 6S KC JS QH TD JC 2D 8S
TH 8H 5C QS TC 9H 4D JC KS JS
7C 5H KC QH JD AS KH 4C AD 4S
5H KS 9C 7D 9H 8D 3S 5D 5C AH
6H 4H 5C 3H 2H 3S QH 5S 6S AS
TD 8C 4H 7C TC KC 4C 3H 7S KS
7C 9C 6D KD 3H 4C QS QC AC KH
JC 6S 5H 2H 2D KD 9D 7C AS JS
AD QH TH 9D 8H TS 6D 3S AS AC
2H 4S 5C 5S TC KC JD 6C TS 3C
QD AS 6H JS 2C 3D 9H KC 4H 8S
KD 8S 9S 7C 2S 3S 6D 6S 4H KC
展开
 我来答
dukinkin
推荐于2016-07-08 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:894万
展开全部
看来看去,好像少了点条件
如果牌面都一样,只是花色不一样,那么是不是判平手?

例如两副牌都是T J Q K A 的同花顺,只是花色不同

根据你上变所给的条件,分辨不出大小
追问
嗯,这题中所给的牌局,都是有确定输赢的,没有平手。也就是说题目中所给的牌局中不会出现牌序相同花色不同的情况。

poker.txt 文档中其实有一千局牌,上面是我截取的,这题考察了从文档中读取数据。
还有题目中的每付牌的比较情况实在不好弄(对大量数据操作)。
追答

既然考察读取数据,那读取数据部分还是留给你自己写

我帮你写判断胜负的部分


提示一下,只要一个大的循环不断读取每一行的10张牌的信息

然后,比较得出胜负结果,记录一下

最后,数据读完,就可以统计输赢情况了


虽然很多组数据,但是说白了只要能够处理一组数据

用循环就可以处理很多组数据了


这里我用随机数随机从52张牌中抽取10张存在pocker元胞数组内

前5张分给玩家1,后5张分给玩家2

实际你要分析txt文件的时候,可以逐行读取10张牌判断赢家

最后的输出部分可以不要,记录一下输赢情况就可以了


判断大小时,主要就是根据规则为每幅五张牌制定一个panbie矩阵

其中panbie矩阵第一个元素是分类,按照

散牌 一对 两队 三张 顺子 同花 三带二 四带一 同花顺

  1      2      3      4      5      6        7          8         9

的顺序分为1~9,9类


而判别后边的数是子类里面,再分大小的办法

例如: 

如果是散牌 那么 panbie矩阵的第一个数就是1 

后面的就是从大到小的5张牌的点数


如果是一对 那么 panbie矩阵的第一个数就是2

后面的就是从大到小的5张牌的点数


如果是三张 那么 panbie矩阵的第一个数就是4

后面的就是这共同三张的点数


判断输赢的时候,从第一位开始,不相同,胜负已分

如果相同 再判断下一位,直到分出胜负


在我的程序里如果有点数相同,花色不同的情况,会输出玩家0胜利

也就是平局的情况,如果你的数据里面没有这种情况,就肯定能分出胜


字数太多,程序只能上传文件了

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式