任务描述
老师给X同学留了一个任务:扑克游戏中的牌型判断。
输入格式:
输入的第一行,是一个整数N,表示有N组数据。
接下来的N行是N组数据,每一行数据有3张扑克牌,
例如:5S 6H 12C,其中数字表示点数(2-10分别代表2点到10点的牌,14代表A,11、12、13代表J、Q、K),
字母表示花色的第一个字符,黑桃(Spade)、红桃(Heart)、梅花(Club)、方块(Diamond)。
以上3张牌为黑桃5、红桃6、方块Q。
输出格式:
输出N行,每一行输出一个单词,表示一组数据三张牌的最大牌型,空格后再输出此牌型的(最大)点数。
所有牌型从大到小排列如下(豹子>同花顺>顺子>同花>对子>花牌):
(1)豹子(Leopard):三张牌点数一样,如5S 5H 5C。
(2)同花顺(Flush straight):三张牌同花色且点数恰好相邻,如5S 6S 7S。
(3)顺子(Straight):三张牌点数恰好相邻,但不同花色,如10H 11D 12C。
(4)同花(Same kind):三张牌花色相同,点数不全相同,如8H 5H 11H。
(5)对子(Pair):花色不全相同,两张牌点数相同,如11H 5C 11D。
(6)花牌(General):花色不全相同,点数全不相同,如:5D 6C 8H。
输入样例:
6
8H 8D 8C
5S 7S 6S
11C 12D 10S
1C 5C 6C
10C 8D 8H
5D 6H 12C
输出样例:
Leopard 8
Flush straight 7
Straight Q
Same kind 6
Pair 8
General Q
开始你的任务吧,祝你成功!
#include<stdio.h>
#include<math.h>
int main (){
int n;
scanf("%d",&n);
int a,b,c;
char x,y,z;
for(int i=1;i<=n;i++){
scanf("%d%c %d%c %d%c",&a,&x,&b,&y,&c,&z);
int t;
if(a>b){
t=a; a=b; b=t;
}
if(a>c){
t=a; a=c; c=t;
}
if(b>c){
t=b; b=c; c=t;
}
if((a<11)&&(b<11)&&(c<11)){
if(a==b&&a==c){
printf("Leopard %d\n",c); //豹子
}
else if(x==y&&x==z&&a==b-1&&b==c-1){
printf("Flush straight %d\n",c); //同花顺
}
else if(a==b-1&&b==c-1){
printf("Straight %d\n",c); //顺子
}
else if(x==y&&x==z){
printf("Same kind %d\n",c); //同花
}
else if(a==b||b==c){
printf("Pair %d\n",b); //对子
}
else {
printf("General %d",c);
}
}
if(c>=11){
if(a==b&&a==c){
printf("Leopard ");
switch(c) {
case 11:{
printf("J\n");
break;
}
case 12:{
printf("Q\n");
break;
}
case 13:{
printf("K\n");
break;
}
case 14:{
printf("A\n");
break;
}
}
}
else if(x==y&&x==z&&a==b-1&&b==c-1){
printf("Flush straight ");
switch(c) {
case 11:{
printf("J\n");
break;
}
case 12:{
printf("Q\n");
break;
}
case 13:{
printf("K\n");
break;
}
case 14:{
printf("A\n");
break;
}
}
}
else if(a==b-1&&b==c-1){
printf("Straight ");
switch(c) {
case 11:{
printf("J\n");
break;
}
case 12:{
printf("Q\n");
break;
}
case 13:{
printf("K\n");
break;
}
case 14:{
printf("A\n");
break;
}
}
}
else if(x==y&&x==z){
printf("Same kind ");
switch(c) {
case 11:{
printf("J\n");
break;
}
case 12:{
printf("Q\n");
break;
}
case 13:{
printf("K\n");
break;
}
case 14:{
printf("A\n");
break;
}
}
}
else if(a==b||b==c){
printf("Pair ");
switch(b) {
case 2:{
printf("%d\n",b);
break;
}
case 3:{
printf("%d\n",b);
break;
}
case 4:{
printf("%d\n",b);
break;
}
case 5:{
printf("%d\n",b);
break;
}
case 6:{
printf("%d\n",b);
break;
}
case 7:{
printf("%d\n",b);
break;
}
case 8:{
printf("%d\n",b);
break;
}
case 9:{
printf("%d\n",b);
break;
}
case 10:{
printf("%d\n",b);
break;
}
case 11:{
printf("J\n");
break;
}
case 12:{
printf("Q\n");
break;
}
case 13:{
printf("K\n");
break;
}
case 14:{
printf("A\n");
break;
}
}
}
else {
printf("General ");
switch(c) {
case 11:{
printf("J\n");
break;
}
case 12:{
printf("Q\n");
break;
}
case 13:{
printf("K\n");
break;
}
case 14:{
printf("A\n");
break;
}
}
}
}
}
return 0;
}