扑克牌大小

题目描述

扑克牌游戏大家应该都比较熟悉了,一副牌由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)输入的两手牌不会出现相等的情况。

答案提示:
(1)除了炸弹和对王之外,其他必须同类型比较。
(2)输入已经保证合法性,不用检查输入是否是合法的牌。
(3)输入的顺子已经经过从小到大排序,因此不用再排序了.

输入描述:
输入两手牌,两手牌之间用“-”连接,每手牌的每张牌以空格分隔,“-”两边没有空格,如4 4 4 4-joker JOKER。


输出描述:
输出两手牌中较大的那手,不含连接符,扑克牌顺序不变,仍以空格隔开;如果不存在比较关系则输出ERROR。

输入例子:
4 4 4 4-joker JOKER

输出例子:
joker JOKER
  1 // 0712.cpp : Defines the entry point for the console application.
  2 //
  3 
  4 #include "stdafx.h"
  5 #include <iostream>
  6 #include <vector>
  7 #include <string>
  8 
  9 using namespace std;
 10 
 11 string str1,str2;
 12 
 13 int gettype(string str)
 14 {
 15     int type = 0;//dan 1  dui 2  san 3  shun 4  zha 5  duiwang 6
 16     if(str.length()==11 && str[0]=='j')
 17         type = 6;
 18     else if(str.length() == 9 || str.length() == 10)
 19         type = 4;
 20     else if(str.length() == 7 || (str.length() == 11 && str[0]=='1' && str[1]=='0'))
 21         type = 5;
 22     else if((str.length() == 5 && str[1]==' ') || str.length() == 8)
 23         type = 3;
 24     else if(str.length() == 3 || (str.length() == 5 && str[0]=='1' && str[1]=='0'))
 25         type = 2;
 26     else if(str.length() == 1 || str.length() == 2)
 27         type = 1;
 28     return type;
 29 }
 30 void compare(int t1,int t2)
 31 {
 32     if(t1 != t2)
 33     {
 34         if(t1 == 6)
 35         {
 36             cout<<str1<<endl;
 37             return;
 38         }
 39         else if(t2 == 6)
 40         {
 41             cout<<str2<<endl;
 42             return;
 43         }
 44         else if(t1 == 5)
 45         {
 46             cout<<str1<<endl;
 47             return;
 48         }
 49         else if(t2 == 5)
 50         {
 51             cout<<str2<<endl;
 52             return;
 53         }
 54         else 
 55         {
 56             cout<<"ERROR"<<endl;
 57             return;
 58         }
 59     }
 60     else
 61     {
 62         if(str1[1]=='0')
 63         {
 64             if(t1=4 &&t2==4) //考虑到2 3 4 5 6-10 J Q K A
 65             {
 66                 if(str2[0]>='2' && str2[0]<='9')
 67                 {
 68                     cout<<str1<<endl;
 69                     return;
 70                 }
 71                 else
 72                 {
 73                     cout<<str2<<endl;
 74                     return;
 75                 }
 76             }
 77             else
 78             {
 79                 if(str2[0]>='3' && str2[0]<='9')
 80                 {
 81                     cout<<str1<<endl;
 82                     return;
 83                 }
 84                 else
 85                 {
 86                     cout<<str2<<endl;
 87                     return;
 88                 }
 89             }
 90         }
 91         else if(str2[1]=='0')
 92         {
 93             if(t1=4 &&t2==4)  //考虑到2 3 4 5 6-10 J Q K A
 94             {
 95                 if(str2[0]>='2' && str2[0]<='9')
 96                 {
 97                     cout<<str1<<endl;
 98                     return;
 99                 }
100                 else
101                 {
102                     cout<<str2<<endl;
103                     return;
104                 }
105             }
106             else
107             {
108                 if(str1[0]>='3' && str1[0]<='9')
109                 {
110                     cout<<str2<<endl;
111                     return;
112                 }
113                 else
114                 {
115                     cout<<str1<<endl;
116                     return;
117                 }
118             }
119         }
120         else if(str1[1]==' ' && str2[1]==' ')
121         {
122             if(t1==4 && t2==4) //考虑到2 3 4 5 6-3 4 5 6 7
123             {
124                 if(str1[0]>str2[0])
125                 {
126                     cout<<str1<<endl;
127                     return;
128                 }
129                 else
130                 {
131                     cout<<str2<<endl;
132                     return;
133                 }
134             }
135             else if(str1[0]=='2')
136                 {
137                     cout<<str1<<endl;
138                     return;
139                 }
140             else if(str2[0]=='2')
141                 {
142                     cout<<str2<<endl;
143                     return;
144                 }
145             else if(str1[0]=='A')
146                 {
147                     cout<<str1<<endl;
148                     return;
149                 }
150             else if(str2[0]=='A')
151                 {
152                     cout<<str2<<endl;
153                     return;
154                 }
155             else if(str1[0]>='3' && str1[0]<='K' && str2[0]>='3' && str2[0]<='K')
156             {
157                 if(str1>str2)
158                 {
159                     cout<<str1<<endl;
160                     return;
161                 }
162                 else
163                 {
164                     cout<<str2<<endl;
165                     return;            
166                 }    
167             }
168         
169         }
170         else  // 考虑到2-3
171         {
172             if(str1>str2)
173             {
174                 cout<<str1<<endl;
175                 return;
176             }
177             else
178             {
179                 cout<<str2<<endl;
180                 return;     
181             }
182         }
183 
184 
185     
186     }
187     
188 }
189 
190 int main(void)
191 {
192     
193     int type1,type2;
194 
195     while(getline(cin,str1,'-'))
196     {
197         
198         getline(cin,str2);
199         type1 = gettype(str1); 
200         type2 = gettype(str2);
201         
202         compare(type1,type2);    
203     }
204     return 0;
205 }

 

posted @ 2016-07-12 23:36  hhboboy  阅读(4221)  评论(0编辑  收藏  举报