题目名称 1554. [UVa 127] 纸牌游戏
输入输出 accordian.in/out
难度等级
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 5
题目来源 Gravatarsywgz 于2014-03-21加入
开放分组 全部用户
提交状态
分类标签
UVa
分享题解
通过:6, 提交:11, 通过率:54.55%
Gravatarslyrabbit 100 0.001 s 0.31 MiB C++
Gravatarchs 100 0.002 s 0.31 MiB C++
Gravatarwolf 100 0.002 s 0.31 MiB C++
Gravatar沉迷学习的假的Keller 100 0.004 s 0.32 MiB C++
Gravatarsywgz 100 0.006 s 0.32 MiB C++
Gravatar小兵 100 0.009 s 0.23 MiB C++
Gravatarslyrabbit 20 0.001 s 0.27 MiB C++
Gravatarwolf 20 0.002 s 0.32 MiB C++
Gravatarslyrabbit 20 0.004 s 0.34 MiB C++
Gravatar小兵 0 0.003 s 0.29 MiB C++
关于 纸牌游戏 的近10条评论(全部评论)

1554. [UVa 127] 纸牌游戏

★   输入文件:accordian.in   输出文件:accordian.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】

你的任务是模拟一种叫「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 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 pile remaining: 52

【提示】

在此键入。

【来源】

uva127,《算法竞赛入门经典》第六章第5节训练参考