联想笔试编程题

Alice和Bob玩牌,牌只有A>7>6>5>4>3>2这6种牌号。现在Alice和Bob都摸三张牌,要比较大小。三张牌有三种情况:三张相同>两张相同>各不相同。如果Alice和Bob的三张牌情况相同,则比较相同牌的大小,如果相同牌一样,则比较第二个大的牌、第三个大的牌。

输入T,代表需要输入T行,每行6个数字,前三个数字是Alice的牌,后三个数字是Bob的牌。

3

A A 7 A A A

2 3 2 4 A 3

3 2 4 4 3 2

然后输出每行牌的赢家,Alice或者Bob或者Tie(平局)。

Bob

Alice

Tie

#include<iostream>
#include<string>
using namespace std;

int cmp(char a, char b){
    return a>b;
}

int category(string s){
    // 全等
    if(s[0] == s[1] && s[1] == s[2]){
        return 3;
    }
    // 只有俩等
    if(s[0] == s[1] && s[0] != s[2] || s[0] == s[2] && s[0] != s[1] || s[1] == s[2] && s[1] != s[0]){
        return 2;
    }
    // 全不等
    return 1;
}
//
int main(){
    int T;
    scanf("%d", &T);
    char s, temp;
    string a, b;
    for(int i=0; i<T; i++){
        a="", b="";
        for(int j=0; j<6; j++){
            cin >> temp;
            j<3 ? a+=temp : b+=temp;
        }
//        cout << "排序前:" << a << "    " << b << endl;
        sort(a.begin(), a.end(), cmp);
        sort(b.begin(), b.end(), cmp);
//        cout << "排序后:" << a << "    " << b << endl;
        if(category(a) == category(b)){
//            cout << "同类型" << endl;
            if(a>b){
                cout << "Alice" << endl;
            }else if(a<b){
                cout << "Bob" << endl;
            }else{
                cout << "Tie" << endl;
            }
        }else if(category(a)<category(b)){
//            cout << "category(a)=" << category(a) << " < " << "category(b)=" << category(b) << endl;
            cout << "Bob" << endl;
        }else if(category(a)>category(b)){
//            cout << "category(a)=" << category(a) << " > " << "category(b)=" << category(b) << endl;
            cout << "Alice" << endl;
        }
    }
    return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值