搜狐 扎金花

题目描述

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

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

对于牌型的规则如下:
1.三张牌一样即为豹子
2.三张牌相连为顺子(A23不算顺子)
3.有且仅有两张牌一样为对子 豹子>顺子>对子>普通牌型 在牌型一样时,比较牌型数值大小(如AAA>KKK,QAK>534,QQ2>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

public static int check(int[] cards) {
        if (cards[0] == cards[1] && cards[1] == cards[2]) {
            return 1;//豹子
        }
        if ((cards[0] + 1) == cards[1] && (cards[1] + 1) == cards[2]) {
            return 2;//顺子
        }
        if (cards[0] == cards[1] || cards[1] == cards[2]) {
            return 3;//对子
        }
        return 4;//普通牌
    }

    public static void change(String c1, int[] cards) {
        int index = 0;
        for (int i = 0, len = c1.length(); i < len; i++) {
            char c = c1.charAt(i);
            if (c == '1') {
                cards[index++] = 10;
                ++i;
            } else if (c >= '2' && c <= '9') {
                cards[index++] = c - '0';
            } else if (c == 'J') {
                cards[index++] = 11;
            } else if (c == 'Q') {
                cards[index++] = 12;
            } else if (c == 'K') {
                cards[index++] = 13;
            } else {
                cards[index++] = 14;
            }
        }
    }

    public static int getResult(int p1, int[] cards1, int p2, int[] cards2) {
        if (p1 < p2) {
            return 1;
        } else if (p1 > p2) {
            return -1;
        } else {
            for (int i = 2; i >= 0; --i) {
                if (cards1[i] > cards2[i]) {
                    return 1;
                } else if (cards1[i] < cards2[i]) {
                    return -1;
                }
            }
        }
        return 0;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String card1 = scanner.next();
            String card2 = scanner.next();
            int[] cards1 = new int[3];
            int[] cards2 = new int[3];
            change(card1, cards1);
            change(card2, cards2);
            Arrays.sort(cards1);
            Arrays.sort(cards2);
            /*for (int i = 0; i < 3; i++) {
                System.out.println(cards1[i]);
            }*/
            int p1 = check(cards1);
            int p2 = check(cards2);
            //System.out.println(p1 + " " + p2);
            System.out.println(getResult(p1,cards1,p2,cards2));
        }
        scanner.close();
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值