扎金花

扎金花题目描述两个搜狐的程序员加了一个月班,终于放假了,于是他们决定扎金花渡过愉快的假期

题目描述

两个搜狐的程序员加了一个月班,终于放假了,于是他们决定扎金花渡过愉快的假期 。

游戏规则:
共52张普通牌,牌面为2,3,4,5,6,7,8,9,10,J,Q,K,A之一,大小递增,各四张; 每人抓三张牌。两人比较手中三张牌大小,大的人获胜。

对于牌型的规则如下:
1.三张牌一样即为豹子
2.三张牌相连为顺子(A23不算顺子)
3.有且仅有两张牌一样为对子 豹子>顺子>对子>普通牌型 在牌型一样时,比较牌型数值大小(如AAA>KKK,QAK>534,2>10104) 在二人均无特殊牌型时,依次比较三张牌中最大的。大的人获胜,如果最大的牌一样,则比较第二大,以此类推(如37K>89Q) 如二人牌面相同,则为平局。

输入描述:
输入两个字符串代表两个玩家的牌(如”10KQ” “354”),先输入的作为玩家1,后输入的作为玩家2

输出描述:
1 代表 玩家1赢 0 代表 平局 -1 代表 玩家2赢 -2 代表不合法的输入

输入例子:
KQ3 3Q9
10QA 6102
5810 7KK
632 74J
10102 K77
JKJ 926
68K 27A

输出例子:
1
1
-1
-1
1
1
-1

分析:
1. 有输入不合法状态
2. 比较顺序: 牌型–大小
3. 比较大小时, 我们需要将字符串转化为数字

解题思路:

输入的2个字符串为stringA, stringB
1. 分别遍历字符串stringA, stringB, 将其转换为3个数字 a1, a2, a3, b1, b2, b3, 数字范围是[2, 14],范围超出直接返回-2
2.判断A, B的类型并排序:
res[0]代表类型:0-离散 1-对子 2-顺子 3-豹子
res[1] ~ res[3] 依次递减

deltab = a-b deltac = a-c deltab = 2, deltac = 1 res={2, a, c, b} deltab = 2, deltac = 0 res={1, a, c, b} deltab = 1, deltac = 2 res={2, a, b, c} deltab = 1, deltac = -1 res={2, c, a, b} deltab = 1, deltac = 0 res={1, a, c, b} deltab = 0, deltac = 0 res={3, a, b, c} deltab = 0, deltac != 0 res={1, a, b, c} deltab = -1, deltac = 1 res={2, b, a, c} deltab = -1, deltac = -1 res={2, b, c, a} deltab = -1, deltac = 0 res={1, b, a, c} deltab = -2, deltac = -1 res={2, b, c, a} deltab = -2, deltac = 0 res={1, b, a, c} 其他的均为离散型{0, x, x, x} 

3.比较数组的各位大小

今天的文章
扎金花分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/60538.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注