迅雷笔试之-纸牌游戏有牛无牛

今日迅雷笔试题一:给定5张牌(除大小王),J/Q/K代表10,A代表1,其他数字还是对应数字。5张牌中有三张加起来是10的倍数就叫有牛,任意三张加起来都不等于10就叫无牛。有牛的情况下,剩余两张加起来的和的个位数为牛数,比如4+7则牛数为1。输入要求:五张牌以逗号分隔输入;输出要求:无牛和输入错误的情况输出“none”,有牛的情况下输出牛数。

#include<iostream>
#include<map>
using namespace std;
int main(){
    char a,b,c,d,e,aa,bb,cc,dd;
    map<char,int> m;
    m['2'] = 2, m['3'] = 3, m['4'] = 4, m['5'] = 5, m['6'] = 6, m['7'] = 7, m['8'] = 8;
    m['9'] = 9, m['10'] = 10, m['A'] = 1, m['J'] = 10, m['Q'] = 10, m['K'] = 10;
    while (cin>>a>>aa>>b>>bb>>c>>cc>>d>>dd>>e){
        int errornum;
        char sz[5] = {a,b,c,d,e};
        map<char, int>::iterator ite = m.begin();
        for (int q = 0; q < 5; ++q){
            ite = m.find(sz[q]);
            if (ite == m.end()){
                cout << "none";
                errornum = 0;
                break;
            }
        }
        if (errornum == 0)
            continue;
        int niunum=0;
        int i = 0;
        int j = i + 1;
        int k = j + 1;
        bool found = 0;
        for (; i < 3; ++i){
            for (j = i + 1; j < 4; ++j){
                for (k = j + 1; k < 5; ++k){
                    if ((m[sz[i]] + m[sz[j]] + m[sz[k]]) % 10 == 0){
                        for (int p = 0; p < 5; ++p){
                            if (p == i || p == j || p == k)
                                continue;
                            else
                                niunum += m[sz[p]];
                        }
                        found = 1;
                        cout << niunum % 10 << endl;
                        break;
                    }           
                }
                if (found)
                    break;
            }
            if (found)
                break;
        }
        if (i = 3 && j == 4 && k == 5)
            cout << "none";
    }
    cin.get();
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值