问题 3430 --斗地主之大炸弹(完善程序)

3430: 斗地主之大炸弹(完善程序)★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 200  解决: 124
[提交][状态][命题人:]

题目描述

小明的弟弟对斗地主很感兴趣,尤其是其中的炸弹,但是他还小,无法快速找到手牌中最大的炸弹,于是他经常向小明求助。小明觉得这样很麻烦,就委托你编一个程序来帮他的弟弟找到手牌中最大的炸弹。斗地主中的牌从小到大依次为:

3 4 5 6 7 8 9 10 J Q K A 2 X D

其中X和D分别表示小王和大王。

#include <iostream>
#include <cstring> 
using namespace std;
int main()
{
    char s[2]; //因为有10 
    int a[18]={0}; //17种牌 
    for(int i=0; i<17; i++)
    {
        cin>>s;
        if(s[0]=='1')   a[10]++;
        else if(s[0]=='J')  a[11]++;
        else if(s[0]=='Q')  a[12]++;
        else if(s[0]=='K')  a[13]++;
        else if(s[0]=='A')  a[14]++;
        else if(s[0]=='2')  a[15]++;
        else if(s[0]=='X')  a[16]++;
        else if(s[0]=='D')  a[17]++;
        else
            _____[1]_______
    }
    if(a[16]>0 && a[17]>0)
        ____[2]_______
    else
    {
        int imax=0;  //保存最大的炸弹下标 
        for(int i=15; i>=3; i--)
        {
            if(a[i]==4)  //找到了4张一样的(炸弹) 
            {
            	   imax=i;
            	   _____[3]______
            }
             
        }
        if(imax>0)
        {
            cout<<"yes"<<endl;
            if(imax<=10)
                _______[4]______
            else
            {
                char c;
                if(imax==11) c='J';
                else if(imax==12) c='Q';
                else if(imax==13) c='K';
                else if(imax==14) c='A';
                else if(imax==15) c='2'; 
                ______[5]________
            }
        }
        else  //没找到
            cout<<"no";
    }
}


输入

17张手牌,相同的牌最多4张。(最多同时拥有一张大王与一张小王)

输出

如果能找到炸弹,输出yes和最大的那个炸弹,如果手牌中没有炸弹,则输出no。

样例输入
Copy
3 5 7 7 7 7 9 J J 9 K K X 6 6 2 2
样例输出
Copy
yes
7777

提示

假如输入手牌3 4 5 6 7 8 8 8 8 A 5 X D J J K Q,其中8888和XD都是炸弹,但是XD比8888更大,所以输出XD。

来源

[提交][状态]