做PTA时发现题库存在这样一道题,虽然不难,但是我写出来感觉很冗沉,希望有大佬可以帮忙批评改正!
任务描述
老师给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
使用 c(gcc) 测评机:
#include <stdio.h>
int Find_max(int a, int b, int c)
{
if (a > b)
{
if (b > c)
{
return a;
}
if (a > c)
{
return a;
}
return c;
}
else if (b > a)
{
if (a > c)
{
return b;
}
if (b > c)
{
return b;
}
return c;
}
return c;
}
int Find_min(int a, int b, int c)
{
if (a < b)
{
if (b < c)
{
return a;
}
if (a < c)
{
return a;
}
return c;
}
else if (b < a)
{
if (a < c)
{
return b;
}
if (b < c)
{
return b;
}
return c;
}
return c;
}
void PD_pk(int a, int b, int c, char x, char y, char z)
{
if (a == b && b == c)
{
printf("%s ", "Leopard");
if (Find_max(a, b, c) > 1 && Find_max