#D1089. 扑克牌排序
扑克牌排序
题目描述
假设这里有 张扑克牌,分别为 ,其中 代表方片, 代表草花, 代表红桃, 代表黑桃,那么,设定如下的排序规则:
- 对于两张卡牌, 与 , 与 表示 , 与 表示 ,如果 与 不同,那么依照 的方式进行排序;
- 假如有 与 相同时,那么就比较 与 的大小。
例如,对于如下的四张牌:,,,,有如下的升序排序结果:,,,。
有人提出了如下的排序策略:先建立 个队列,用于存放点数的大小,将卡牌依点数存放入各自的队列之中,然后再按队列 到队列 依次出队。
例如,对于上面的结果,依次进队后,结果如下:
- 队列 :;
- 队列 :;
- 队列 :,。
将其依次出队后,结果为 ,,,。
然后,再建立 个队列,用于存放花色。将卡牌依花色 存放入队列 中,然后再按队列 到队列 依次出队。
例如,对于上面刚刚出队的序列 ,,,,将其依次进队,结果如下:
- 队列 :;
- 队列 :,;
- 队列 :
将其依次出队后,结果为 ,,,,排序结束。
请根据上面的算法,编写一个用队列对扑克牌排序的程序,要求依照上面的排序规则,根据先花色后点数的方法进行排序。
输入格式
输入分为两行。
第一行为一个整数 ,表示一共有 张牌()。
第二行用 的形式表示每一张牌,其中 为 , 为 。
输出格式
输出三个部分。
第一个部分为第一次进队出队的结果,用 Queue1:...
表示,共 行,结果用空格分隔,下同。
第二部分为第二次进队出队的结果,用 QueueA:...
表示,共 行。
第三部分为一行,即将卡牌排序后的结果(升序排序)。
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
第二次入队出队时,可以复用第一次时 个队列中的 个。所以其实只需要开辟 个队列即可。