码迷,mamicode.com
首页 > 其他好文 > 详细

扑克牌大小

时间:2016-07-13 01:13:00      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

题目描述

扑克牌游戏大家应该都比较熟悉了,一副牌由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;//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(str2[0]>=3 && str2[0]<=9)
 65             {
 66                 cout<<str1<<endl;
 67                 return;
 68             }
 69             else
 70             {
 71                 cout<<str2<<endl;
 72                 return;
 73             }
 74         }
 75         else if(str2[1]==0)
 76         {
 77             if(str1[0]>=3 && str1[0]<=9)
 78             {
 79                 cout<<str2<<endl;
 80                 return;
 81             }
 82             else
 83             {
 84                 cout<<str1<<endl;
 85                 return;
 86             }
 87         }
 88         else if(str1[1]==  && str2[1]== )
 89         {
 90             if(str1[0]==2)
 91                 {
 92                     cout<<str1<<endl;
 93                     return;
 94                 }
 95             else if(str2[0]==2)
 96                 {
 97                     cout<<str2<<endl;
 98                     return;
 99                 }
100             else if(str1[0]==A)
101                 {
102                     cout<<str1<<endl;
103                     return;
104                 }
105             else if(str2[0]==A)
106                 {
107                     cout<<str2<<endl;
108                     return;
109                 }
110             else if(str1[0]>=3 && str1[0]<=K && str2[0]>=3 && str2[0]<=K)
111             {
112                 if(str1>str2)
113                 {
114                     cout<<str1<<endl;
115                     return;
116                 }
117                 else
118                 {
119                     cout<<str2<<endl;
120                     return;            
121                 }    
122             }
123         
124         }
125 
126 
127     
128     }
129     
130 }
131 
132 int main(void)
133 {
134     
135     int type1,type2;
136 
137     while(getline(cin,str1,_))
138     {
139         
140         getline(cin,str2);
141         type1 = gettype(str1); 
142         type2 = gettype(str2);
143         
144         compare(type1,type2);    
145     }
146     return 0;
147 }

 

扑克牌大小

标签:

原文地址:http://www.cnblogs.com/hhboboy/p/5665323.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!