#D1089. 扑克牌排序

扑克牌排序

题目描述

假设这里有 3636 张扑克牌,分别为 A1A9,B1B9,C1C9,D1D9A1\sim A9,B1\sim B9,C1\sim C9,D1\sim D9,其中 AA 代表方片,BB 代表草花,CC 代表红桃,DD 代表黑桃,那么,设定如下的排序规则:

  1. 对于两张卡牌,X1Y1X_1Y_1X2Y2X_2Y_2X1X_1X2X_2 表示 ADA\sim DY1Y_1Y2Y_2 表示 191\sim 9,如果 X1X_1X2X_2 不同,那么依照 D>C>B>AD>C>B>A 的方式进行排序;
  2. 假如有 X1X_1X2X_2 相同时,那么就比较 Y1Y_1Y2Y_2 的大小。

例如,对于如下的四张牌:D3D3C4C4A4A4C1C1,有如下的升序排序结果:A4A4C1C1C4C4D3D3

有人提出了如下的排序策略:先建立 99 个队列,用于存放点数的大小,将卡牌依点数存放入各自的队列之中,然后再按队列 11 到队列 99 依次出队。

例如,对于上面的结果,依次进队后,结果如下:

  • 队列 11C1C1
  • 队列 33D3D3
  • 队列 44C4C4A4A4

将其依次出队后,结果为 C1C1D3D3C4C4A4A4

然后,再建立 44 个队列,用于存放花色。将卡牌依花色 ADA\sim D 存放入队列 141\sim 4 中,然后再按队列 11 到队列 44 依次出队。

例如,对于上面刚刚出队的序列 C1C1D3D3C4C4A4A4,将其依次进队,结果如下:

  • 队列 11A4A4
  • 队列 33C1C1C4C4
  • 队列 44D3D3

将其依次出队后,结果为 A4A4C1C1C4C4D3D3,排序结束。

请根据上面的算法,编写一个用队列对扑克牌排序的程序,要求依照上面的排序规则,根据先花色后点数的方法进行排序。

输入格式

输入分为两行。

第一行为一个整数 nn,表示一共有 nn 张牌(1n1001\le n\le 100)。

第二行用 XYXY 的形式表示每一张牌,其中 XXADA\sim DYY191\sim 9

输出格式

输出三个部分。

第一个部分为第一次进队出队的结果,用 Queue1:... 表示,共 99 行,结果用空格分隔,下同。

第二部分为第二次进队出队的结果,用 QueueA:... 表示,共 44 行。

第三部分为一行,即将卡牌排序后的结果(升序排序)。

8
D8 A6 C3 B8 C5 A1 B5 D3
Queue1:A1
Queue2:
Queue3:C3 D3
Queue4:
Queue5:C5 B5
Queue6:A6
Queue7:
Queue8:D8 B8
Queue9:
QueueA:A1 A6
QueueB:B5 B8
QueueC:C3 C5
QueueD:D3 D8
A1 A6 B5 B8 C3 C5 D3 D8

第二次入队出队时,可以复用第一次时 99 个队列中的 44 个。所以其实只需要开辟 99 个队列即可。