U28773.薯片君的扑克牌

提高+/省选-

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

薯片君最近迷上了德国斗地主,一下课就要和小码君斗地主。

这一天,薯片君像往常一样玩德国斗地主,但他的老师叫他去玩德州扑克,薯片君只能遵命。牌已经发完了,等会再来打时间又来不及,薯片君想了一个好主意,叫他的宠物 AC 狗帮他打牌。

作为 AI 的 AC 狗自然是很忠诚地接下了任务,但它发现了一个问题,它只会打牌,不会整理。于是他请你帮他整理薯片君的牌,作为报酬是保佑你“考的全会,蒙的全对”。

现在请你编写一个程序,帮 AC 狗整理薯片君的扑克牌。


你需要按规则整理扑克牌组。

「单牌」:扑克牌从大到小依次是大王 JOKER\tt{\color{black}J\color{red}OKER},小王 joker\tt{\color{red}joker}2\tt{\color{FEB302}2}A\tt{\color{FEB302}A},国王 K\tt{\color{FEB302}K},王后 Q\tt{\color{FEB302}Q},骑士 K\tt{\color{FEB302}K}10\tt{\color{262626}10}9\tt{\color{262626}9}8\tt{\color{262626}8}7\tt{\color{262626}7}6\tt{\color{262626}6}5\tt{\color{262626}5}4\tt{\color{262626}4}3\tt{\color{262626}3}。其中大小王各一张,其他牌都是 44 张。「单牌」直接输出对应的扑克牌名称即可。

「对子」:A pair of ...,即两张相同的牌;

「三张」:Three of ...,即三张相同的牌;

「三带一」:Three of ... with ...,即三张相同的牌加上一张单牌;

「顺子」:Flush from ... to ...,即五张及以上大小相邻不相同的牌、2\tt{2} 和大小王除外;

「连对」:Flush pair from ... to ...,即三个及以上大小相邻不相同的对子、2\tt{2} 除外;

「飞机」:Plane ... and ...,即两个大小相邻不相同的三张、2除外,如果是由三带一组成,需要再按从小到大输出with ... and ...

「炸弹」:The boom of ...,即四张相同的牌;

「王炸」:A-BOOM,即由大小王组成。

题面注释中的 ... 代表 11 张牌的名称。

优先级说明:王炸 >> 炸弹 >> 飞机 >> 连对 >> 顺子 >> 三带一 >> 三张,各组合中牌越大,组合越大,如 3\tt38\tt8 的「顺子」大于 3\tt37\tt7 的「顺子」。

整理规则

  1. 优先整理「王炸」与「炸弹」。
  2. 「单牌」 越少越好、越大越好。即在先整理「王炸」与「炸弹」的前提下,尽量让「单牌」的数量更小,其牌值尽可能大。如果与第 6 条冲突,请优先遵循第 6 条。
  3. 「对子」 越少越好、越大越好,解释同上一条。
  4. 优先级高的组合优先整理,如在满足前 33 条的情况下,「飞机」越多越好,如果「飞机」一样多,「连对」越多越好,以此类推。
  5. 尽量不要把大的组合拆成多个小的组合,详见样例 11​。
  6. 尽量让大的「三张」带大的「单牌」。

由于 AC 狗等得花都谢了,所以你只有 11 秒时间。

输入格式

11 行,1313 个字符串,用空格隔开,表示 1313 张扑克牌。

输出格式

多行,从大到小输出薯片君的扑克牌整理后的组合,每行输出一个组合。

输入输出样例

  • 输入#1

    9 8 5 4 7 4 4 6 JOKER A A A 10

    输出#1

    Flush from 5 to 10
    Three of A with JOKER
    Three of 4
  • 输入#2

    5 5 7 7 5 6 6 5 2 6 2 7 2

    输出#2

    The boom of 5
    Plane 6 and 7
    Three of 2
    
  • 输入#3

    3 4 5 6 7 8 8 9 9 10 10 J Q

    输出#3

    Flush from 8 to Q
    Flush from 3 to 10

说明/提示

在样例 11 中,为了让「单牌」少一些,可以整理「顺子」,再整理一个「三带一」和一个「三张」。值得注意的是,为了让「顺子」大一点,应把 10\tt10 连成「顺子」,而不是带在「三带一」里。

在样例 22 中,5\tt{5} 炸必须优先整理。再整理 「飞机」,最后整理「三张」2\tt2

在样例 33 中,虽然可以 「连对」,但是为了让「单牌」尽可能少,必须拆成 22 个「顺子」。

对于所有测试点,保证输入的内容均在给定 1313 张单牌之内。

首页