您的位置:首页 > 其它

华为机试——扑克牌

2015-09-29 11:36 183 查看

华为机试——扑克牌

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

有一下几种情况:

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: