题目名称 | 1554. [UVa 127] 纸牌游戏 |
---|---|
输入输出 | accordian.in/out |
难度等级 | ★ |
时间限制 | 1000 ms (1 s) |
内存限制 | 256 MiB |
测试数据 | 5 |
题目来源 | sywgz 于2014-03-21加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:6, 提交:11, 通过率:54.55% | ||||
slyrabbit | 100 | 0.001 s | 0.31 MiB | C++ |
chs | 100 | 0.002 s | 0.31 MiB | C++ |
wolf | 100 | 0.002 s | 0.31 MiB | C++ |
沉迷学习的假的Keller | 100 | 0.004 s | 0.32 MiB | C++ |
sywgz | 100 | 0.006 s | 0.32 MiB | C++ |
小兵 | 100 | 0.009 s | 0.23 MiB | C++ |
slyrabbit | 20 | 0.001 s | 0.27 MiB | C++ |
wolf | 20 | 0.002 s | 0.32 MiB | C++ |
slyrabbit | 20 | 0.004 s | 0.34 MiB | C++ |
小兵 | 0 | 0.003 s | 0.29 MiB | C++ |
关于 纸牌游戏 的近10条评论(全部评论) |
---|
你的任务是模拟一种叫「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。
在此键入。
uva127,《算法竞赛入门经典》第六章第5节训练参考