题库练习 单人纸牌
← 上一题 下一题 →

A2988 | 单人纸牌

时间限制1s
内存限制128MB
通过 / 提交0/0

题目描述

单人纸牌游戏,共 $36$ 张牌分成 $9$ 叠,每叠 $4$ 张牌面向上。每次,游戏者可以从某两个不同的牌堆最顶上取出两张牌面相同的牌(如黑桃 $10$ 和梅花 $10$)并且一起拿走。如果最后所有纸牌都被取走,则游戏者就赢了,否则游戏者就输了。

George 很热衷于玩这个游戏,但是一旦有时有多种选择的方法,George 就不知道取哪一种好了,George 会从中随机地选择一种走,例如:顶上的 $9$ 张牌为 $\tt KS,\tt KH,\tt KD,\tt 9H,\tt 8S,\tt 8D,\tt 7C,\tt 7D,\tt 6H$,显然有 $5$ 种取法:$\tt (KS,KH),(KS,KD),(KH,KD),(8S,8D),(7C,7D)$,当然 George 取到每一种取法的概率都是 $1/5$。

有一次,George 的朋友 Andrew 告诉他,这样做是很愚蠢的,不过 George 不相信,他认为如此玩最后成功的概率是非常大的。请写一个程序帮助 George 证明他的结论:计算按照他的策略,最后胜利的概率。

输入格式

输入共 $9$ 行,每行 $4$ 组用空格分开的字串,每个字串两个字符,分别表示牌面和花色,按照从堆底到堆顶的顺序给出。

输出格式

一行,最后胜利的概率,精确到小数点后 $6$ 位。

输入输出样例

输入 #1
AS 9S 6C KS 
JC QH AC KH 
7S QD JD KD 
QS TS JS 9H 
6D TD AD 8S 
QC TH KC 8D 
8C 9D TC 7C 
9C 7H JH 7D 
8H 6S AH 6H 
输出 #1
0.589314
C++ 编辑器
输入
输出