#P1214. "Accordian" Patience

    ID: 215 传统题 1000ms 256MiB 尝试: 3 已通过: 1 难度: 10 上传者: 标签>模拟栈操作贪心算法New Zealand 1989UVA 127

"Accordian" Patience

描述

你需要模拟一种名为“手风琴”接龙的纸牌游戏,其规则如下:

将纸牌从左到右逐张排成一行,彼此不重叠。每当一张牌与其左侧相邻的牌或左侧第三张牌的花色或数字相同时,可以将它移动到那张牌上。移动后需检查是否引发新的移动机会。任何时候只能移动每堆牌的最上面一张。出现牌堆之间的空隙时,应立即将右侧所有牌堆左移一位填补空隙。尽可能将牌向左合并,直到无法移动为止。若最终只剩一堆牌,则游戏胜利。

若存在多种移动可能,应优先移动最左侧可移动的牌。若一张牌既可左移一位又可左移三位,则选择左移三位。

输入

输入数据指定了发牌的顺序。每组输入包含两行,每行有2626张牌,每张牌以单个空格分隔。输入文件的最后一行以“#”开头。每张牌由两个字符表示:第一个字符为牌面值A=AceA= Ace292-9T=10T=10J=JackJ= JackQ=QueenQ= QueenK=KingK= King,第二个字符为花色(C=梅花C=梅花D=方块D=方块H=红桃H=红桃S=黑桃S=黑桃)。

输出

对于每组输入(共5252张牌),输出一行结果,表示按上述规则进行“手风琴”接龙后剩余的牌堆数量及各堆牌数。每一行输出显示在按照相应输入行所描述的牌堆进行 “纸牌接龙” 游戏后,剩余的每堆牌的牌数。

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 6S
8C 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 1
1 piles remaining: 52

来源

新西兰 1989,UVA 127