华为机试——扑克牌

来源:互联网 发布:枪战王者知乎 编辑:程序博客网 时间:2024/06/06 08:36

华为机试——扑克牌

一副牌中发五张扑克牌给你,让你判断数字的组成:

有一下几种情况:

1.四条:即四章一样数值的牌(牌均不论花色)

2.三条带一对

3.三条带两张不同数值的牌

4.两对

5.顺子 包括10,J,Q,K,A

6.什么都不是

7.只有一对。

#include<iostream>#include<string>#include<algorithm>using namespace std;int main(){    string str;    cin>>str;    int flag;    int num[5],m=0;    for(int i=0;i<str.size()&&m<5;i++)    {        if(str[i]>='2' && str[i]<='9')            num[m++]=str[i]-'0';        else if(str[i]=='1'&& str[i+1]=='0')        {            num[m++]=10;            i++;        }        else if(str[i]=='J' ||str[i]=='j')            num[m++]=11;        else if(str[i]=='Q'||str[i]=='q')            num[m++]=12;        else if(str[i]=='K' || str[i]=='k')            num[m++]=13;        else if(str[i]=='A' || str[i] =='a')            num[m++]=14;        else        {            cout<<"输入错误"<<endl;            return 0;        }    }        sort(num,num+5);        if(num[0]==num[3] || num[1]==num[4])            flag=1;        else if((num[0]==num[2] && num[3]==num[4])||(num[2]==num[4] &&num[0]==num[1]))            flag=2;        else if((num[0]==num[2] && num[3]!=num[4])||(num[1]==num[3] && num[0]!=num[4])||(num[2]==num[4] && num[0]!=num[1]))            flag=3;        else if((num[0]==num[1] && num[3]==num[4])||(num[0]==num[1] && num[2]==num[3])||(num[1] ==num[2] && num[3]==num[4]))            flag=4;        else if(num[0]-num[4]==4)            flag=5;        else if(num[0]==num[1] ||num[1]==num[2] ||num[3]==num[4] ||num[3]==num[4])            flag=7;        else            flag=6;        cout<<flag<<endl;}
0 0