网站页面
当前课程
成员
General
主题 1
主题 2
主题 4
主题 5
主题 6
主题 7
主题 8
主题 9
主题 10
主题 11
主题 12
主题 13
主题 14
主题 15
主题 16
主题 17
主题 18
主题 19
主题 20
[uva127]纸牌游戏
成绩 | 开启时间 | 2014年09月19日 星期五 10:08 | |
折扣 | 0.8 | 折扣时间 | 2014年09月26日 星期五 10:08 |
允许迟交 | 是 | 关闭时间 | 2014年09月26日 星期五 10:08 |
输入文件 | accordian.in | 输出文件 | accordian.out |
【题目描述】
你的任务是模拟一种叫「Accordian」的纸牌游戏,他的游戏规则如下: 一副扑克牌有52张牌,首先把纸牌一张一张由左到右排好(不能有重叠,所以共有 52堆牌,每堆一张),当某一张牌与他左边那张牌或者左边的第三张牌有「Match」的时候,就把这张牌移到那张牌上面去。在这里两张牌「Match」指 的是这两张牌的花色(suit)或者点数(rank)一样。当你做了一个移动之后,要察看是否还可以做其他的移动。 在任何时间,只有最上面那张牌可以被移动。 如果因为移动一张牌使得产生一个空格(也就是被移动的那堆牌只有一张牌),你必须把右边所有的牌堆往左移一格。如此不断的寻找可移动的牌,直到没有一张牌可以移动游戏就结束了。 在选择可以移动的牌的时候可能有些状况会发生: 如果有两张牌都可以移动,你应该要移动最左边的那张牌; 当一张牌可以被移动到左边一格,或左边三格的时候,你必须移动到左边三格。
【输入格式】
输入包含多组测试资料。每组测试资料两行,每行有26张牌的资料。每张牌以2个 字元代表。第一个字元代表牌的点数(A=Ace, 2~9, T=10, J=Jack, Q=Queen, K=King),第二个字元代表牌的花色(C=Clubs, D =Diamonds, H=Hearts, S=Spades)
若遇到仅含#的一行代表输入结束。
【输出格式】
对每组测试资料输出游戏结束时剩下几堆牌,以及每堆牌有多少张牌。请注意如果只有1堆牌,pile后没有加s。
【样例输入】
QD AD 8H 5S 3H 5H TC 4D JH KS 6H 8S JS AC AS 8D 2H QS TS 3S AH 4H TH TD 3C 6S8C 7D 4C 4S 7S 9H 7C 5D 2S KD 2D QH JD 6D 9D JC 2C KH 3D QC 6C 9S KC 7H 9C 5C
AC 2C 3C 4C 5C 6C 7C 8C 9C TC JC QC KC AD 2D 3D 4D 5D 6D 7D 8D TD 9D JD QD KD
AH 2H 3H 4H 5H 6H 7H 8H 9H KH 6S QH TH AS 2S 3S 4S 5S JH 7S 8S 9S TS JS QS KS
#
【样例输出】
6 piles remaining: 40 8 1 1 1 11 pile remaining: 52
【提示】
在此键入。
【来源】
uva127,《算法竞赛入门经典》第六章第5节训练参考