【华为oj】扑克牌比较

来源:互联网 发布:美工基础知识培训 编辑:程序博客网 时间:2024/04/29 04:20
描述
扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A、2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):
3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER
输入两手牌,两手牌之间用"-"连接,每手牌的每张牌以空格分隔,"-"两边没有空格,如:4 4 4 4-joker JOKER。
请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR。
基本规则:
(1)输入每手牌可能是个子、对子、顺子(连续5张)、三个、炸弹(四个)和对王中的一种,不存在其他情况,由输入保证两手牌都是合法的,顺子已经从小到大排列;
(2)除了炸弹和对王可以和所有牌比较之外,其他类型的牌只能跟相同类型的存在比较关系(如,对子跟对子比较,三个跟三个比较),不考虑拆牌情况(如:将对子拆分成个子);
(3)大小规则跟大家平时了解的常见规则相同,个子、对子、三个比较牌面大小;顺子比较最小牌大小;炸弹大于前面所有的牌,炸弹之间比较牌面大小;对王是最大的牌;
(4)输入的两手牌不会出现相等的情况。
 
 
知识点 字符串,循环,链表,队列,栈,查找,搜索,排序,树,图,数组,函数,指针,枚举,位运算,结构体,联合体,文件操作,递归
运行时间限制 0M
内存限制 0
输入
输入两手牌,两手牌之间用"-"连接,每手牌的每张牌以空格分隔,"-"两边没有空格,如 4 4 4 4-joker JOKER。
输出
输出两手牌中较大的那手,不含连接符,扑克牌顺序不变,仍以空格隔开;如果不存在比较关系则输出ERROR。
样例输入 4 4 4 4-joker JOKER
样例输出 joker JOKER



#include<iostream>#include<stdio.h>#include<stdlib.h>#include<string>using namespace std;string compareCard(string str);int main(){string str,outstr;int pos1=0;getline(cin,str);outstr=compareCard(str);while((pos1=outstr.find('1',pos1))!=-1){outstr=outstr.insert(pos1+1,1,'0');pos1++;}cout<<outstr<<endl;system("pause");return 0;}string compareCard(string str){int tr[200]={0};tr['3']=1;tr['4']=2;tr['5']=3;tr['6']=4;tr['7']=5;tr['8']=6;tr['9']=7;tr['1']=8;//10tr['J']=9;tr['Q']=10;tr['K']=11;tr['A']=12;tr['2']=13;stringstr1,str2;int len=str.size();int pos0=0;while((pos0=str.find('0',pos0))!=-1)//chang '10' to '1'{str=str.erase(pos0,1);pos0++;}//cout<<"the input string is :"<<str<<endl;int pos=str.find('-');if(pos==-1)return "ERROR";int len1,len2;str1=str.substr(0,pos);str2=str.substr(pos+1);len1=str1.size();len2=str2.size();//DEBUG//cout<<"str1 : "<<str1<<"\tstr2 : "<<str2<<endl;if(len1==11)return str1;if(len2==11)return str2;if(len1==7||len2==7)//4张炸弹{if(len1==7&&len2!=7)return str1;else if(len2==7&&len1!=7)return str2;else if(len1==7&&len2==7)return (tr[str1[0]]>tr[str2[0]]?str1:str2);}if(len1==1||len2==1){if(len1==1&&len2==1)return (tr[str1[0]]>tr[str2[0]]?str1:str2);else if(len1==1&&len2!=1){if(str2=="joker"||str2=="JOKER")return str2;elsereturn "ERROR";}else if(len2==1&&len1!=1){if(str1=="joker"||str1=="JOKER")return str1;elsereturn "ERROR";}}else if(len1==3||len2==3){if(len1==3&&len2==3)return (tr[str1[0]]>tr[str2[0]]?str1:str2);if(len1!=3||len2!=3)return "ERROR";}else if(len1==5||len2==5){if(len1!=5||len2!=5)return "ERROR";else if((str1.find(' ')!=-1)&&(str2.find(' ')!=-1))return (tr[str1[0]]>tr[str2[0]]?str1:str2);else if((str1.find(' ')==-1)&&(str2.find(' ')==-1))return "JOKER";elsereturn "ERROR";}else if(len1==9||len2==9){if(len1!=9||len2!=9)return "ERROR";elsereturn (tr[str1[0]]>tr[str2[0]]?str1:str2);}}


0 0
原创粉丝点击