回分類題庫
d030: 2008 程式達人 D - UNO紙牌遊戲
出處:

Difficulity : 1
Accepted : 32 Times | Submit :80 Times | Clicks : 2277
Accepted : 28 Users | Submit : 34 Users | Accepted rate : 82%
Time Limit :2001 ms | Memory Limit : 32001 KBytes
題目加入時間 : 2008-10-10 10:25

Content :

UNO(西班牙語和義大利語解作「一」)是一種紙牌遊戲,由 Merle Robbins 在 1971 年發明,現在由遊戲公司 Mattel 生產。當玩者手上只餘一張牌時,必須喊出"uno",遊戲因而得名。

遊戲牌分四種顏色:紅色(R)、綠色(G)、藍色(B)及黃色(Y),每種色有 13 張牌,其中 10 張為數字牌(0-9),其餘為功能牌:"skip"(跳過)、"draw two"(抽牌 2 張)及"reverse"(逆轉出牌方向),另有黑色強制牌兩種:"wild"(轉色)及"wild draw four"(轉色並抽牌 4 張)。每副牌共有 108 張卡,4 種顏色各有兩套(0 牌除外,各只有一套),黑色強制牌各有 4 套共 8 張。

玩牌規則大略如下。除了第一張牌之外,下一位出牌者要依照上一張牌的顏色或數字打出相對應的牌。舉例來說;若上一張牌為紅色的7(R7),則下一位出牌者必須打出任一紅色的牌或任何顏色但數字為7的牌,或者出功能牌。也可以出強制牌( Wild cards 或 Wild Draw Four cards )。強制牌的下一位出牌者則不必顧慮上一玩家所出的牌是何顏色或數字。

某天,在晚餐過後,你的同學聚在一起晚UNO牌直到深夜。之後因為想起第二天有期中考,所以遊戲草草結束(有期中考為何還玩到深夜呢)。在離去之前,某位同學將玩完的牌堆中的所有強制牌抽走,但沒有改變其他牌的順序。你因為對明天的考試很有把握,所以閒得無聊,決定寫個程式打發時間。

Input :

輸入檔由最多 100 個 case 所組成,每個 case 的第一個輸入是一個大於 0 小於 101 的正整數 n,代表牌堆中的牌的個數。 在 n 之後則是(按順序的)n 個牌的說明。舉例來說,如果是數字牌,R5 代表紅色的 5,B8 代表藍色的 8,Y9 代表黃色的 9 等等以此類推,如果是功能牌,則以 S 代表”skip”,D 代表”draw two”,V 代表”reverse”。輸入檔的最後以 0 表示輸入檔的結尾。

Output :

對於每一個 case,輸出為一個小於或等於 8 的整數,或者是輸出”Impossible”。此整數代表最少的黑色強制牌的個數以使得牌堆變得有意義(亦即符合 UNO 遊戲規則的牌堆)。因為強制牌最多僅有 8 張,所以如果所需的強制牌的最少個數大於 8,則輸出”Impossible”。

Sample Input :

8
R0
R3
B3
B2
G3
G9
Y9
Y1
10
R0
G1
B2
Y3
R4
G5
B6
Y7
R8
G9
0

Sample Output :

1
Impossible

Hint :

解題率:9/19

Author :

(管理員:MrWrongAnswer)

  Solve it!   Status Forum (0)

C++
C
JAVA
23611. henryokc (1 ms , 361KB)
3416. Dlackty (2 ms , 414KB)
36439. cp99303052 (4 ms , 366KB)
20901. liouzhou_101 (4 ms , 253KB)
64908. lw310659 (6 ms , 434KB)
54412. ag100 (1 ms , 237KB)
8142. erdfcv0521 (1 ms , 248KB)
1448. Tc (1 ms , 238KB)
87433. nccucs105703050 (2 ms , 234KB)
54410. ag100 (2 ms , 236KB)
87557. jer22366 (106 ms , 1206KB)
55488. nwgs524513cja (118 ms , 188KB)

執行時間會受很多因素影響因此僅供參考,主機等級請看這裡