单人纸牌

时间限制: 1 Sec  内存限制: 128 MB

题目描述

单人纸牌游戏,共 36 张牌分成 9 叠,每叠 4 张牌面向上。每次,游戏者可以从某两个不同的牌堆最顶上取出两张牌面相同的牌(如黑桃 10 和梅花 10)并且一起拿走。如果最后所有纸牌都被取走,则游戏者就赢了,否则游戏者就输了。
George 很热衷于玩这个游戏,但是一旦有时有多种选择的方法,George 就不知道取哪一种好了,George 会从中随机地选择一种走,例如:顶上的 9 张牌为 KS, KH, KD, 9H,8S, 8D, 7C, 7D,6H,显然有 5 种取法:(KS, KH), (KS, KD), (KH, KD), (8S,8D), (7C, 7D),当然 George 取到每一种取法的概率都是 1/5。
有一次,George 的朋友 Andrew 告诉他,这样做是很愚蠢的,不过 George 不相信,他认为如此玩最后成功的概率是非常大的。请写一个程序帮助 George 证明他的结论:计算按照他的策略,最后胜利的概率。

输入

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

输出

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

样例输入

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

样例输出

0.589
题解:
注意“按照从堆底到堆顶的顺序给出”,所以输入的数应该先反过来DP
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<queue>
#include<stack>
#include<ctime>
#include<vector>
using namespace std;
double f[][][][][][][][][];
int j[],s[];
char a[][];
int main()
{
int i,k;
for(i=; i<=; i++)
{
char s[];
gets(s+);
a[i][]=s[];
a[i][]=s[];
a[i][]=s[];
a[i][]=s[];
}
f[][][][][][][][][]=;
for(j[]=; j[]<=; j[]++)
{
for(j[]=; j[]<=; j[]++)
{
for(j[]=; j[]<=; j[]++)
{
for(j[]=; j[]<=; j[]++)
{
for(j[]=; j[]<=; j[]++)
{
for(j[]=; j[]<=; j[]++)
{
for(j[]=; j[]<=; j[]++)
{
for(j[]=; j[]<=; j[]++)
{
for(j[]=; j[]<=; j[]++)
{
if(f[j[]][j[]][j[]][j[]][j[]][j[]][j[]][j[]][j[]]!=)
{
double cnt=;
for(i=; i<=; i++)
for(k=i+; k<=; k++)
if(j[i]+<=&&j[k]+<=&&a[i][j[i]+]==a[k][j[k]+])cnt++;
if(cnt==)continue;
for(i=; i<=; i++)
{
for(k=i+; k<=; k++)
{
if(j[i]+<=&&j[k]+<=&&a[i][j[i]+]==a[k][j[k]+])
{
s[i]++;s[k]++;
f[j[]+s[]][j[]+s[]][j[]+s[]][j[]+s[]][j[]+s[]][j[]+s[]][j[]+s[]][j[]+s[]][j[]+s[]]+=f[j[]][j[]][j[]][j[]][j[]][j[]][j[]][j[]][j[]]/cnt;
s[i]--;s[k]--;
}
}
}
}
}
}
}
}
}
}
}
}
}
printf("%.3lf",f[][][][][][][][][]);
return ;
}

单人纸牌_NOI导刊2011提高(04)的更多相关文章

  1. P1837 单人纸牌_NOI导刊2011提高(04)

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

  2. P1836 【数页码_NOI导刊2011提高(04)】

    P1836 数页码_NOI导刊2011提高(04) 题目描述 一本书的页码是从1—n编号的连续整数:1,2,3,…,n.请你求出全部页码中所有单个数字的和,例如第123页,它的和就是1+2+3=6. ...

  3. 贪心—— P1809 过河问题_NOI导刊2011提高(01)

    洛谷——P1809 过河问题_NOI导刊2011提高(01) 题目描述 有一个大晴天,Oliver与同学们一共N人出游,他们走到一条河的东岸边,想要过河到西岸.而东岸边有一条小船. 船太小了,一次只能 ...

  4. 洛谷 P1808 单词分类_NOI导刊2011提高(01)

    P1808 单词分类_NOI导刊2011提高(01) 题目描述 Oliver为了学好英语决定苦背单词,但很快他发现要直接记住杂乱无章的单词非常困难,他决定对单词进行分类. 两个单词可以分为一类当且仅当 ...

  5. 洛谷P1808 单词分类_NOI导刊2011提高(01) 字符串排序

    洛谷P1808 单词分类_NOI导刊2011提高(01) 题目描述 Oliver为了学好英语决定苦背单词,但很快他发现要直接记住杂乱无章的单词非常困难,他决定对单词进行分类. 两个单词可以分为一类当且 ...

  6. P1835 素数密度_NOI导刊2011提高(04)

    题目描述 给定区间[L,R](L≤R≤2147483647,R-L≤1000000),请计算区间中素数的个数. 输入输出格式 输入格式: 两个数L和R. 输出格式: 一行,区间中素数的个数. 输入输出 ...

  7. 素数密度_NOI导刊2011提高(04)

    题目描述 给定区间[L, R](L <= R <= 2147483647,R-L <= 1000000),请计算区间中素数的个数. 输入 两个数 L 和 R. 输出 一行,区间中素数 ...

  8. [luoguP1835] 素数密度_NOI导刊2011提高(04)(素数筛)

    传送门 数据辣么大,怎么搞?(L≤R≤2147483647) 注意到R-L≤1000000 所以可以直接筛R-L区间内的数, 但是需要用已知的小的素数筛, R-L区间内的大部分数肯定能用较小的素数筛去 ...

  9. 洛谷P1809 过河问题_NOI导刊2011提高(01)

    To 洛谷.1809 过河问题 题目描述 有一个大晴天,Oliver与同学们一共N人出游,他们走到一条河的东岸边,想要过河到西岸.而东岸边有一条小船. 船太小了,一次只能乘坐两人.每个人都有一个渡河时 ...

随机推荐

  1. lightoj1336数论基础

    #include<iostream> #include<cstdio> #include<cmath> #define ll long long using nam ...

  2. Linux下安装Oracle的两种方式------有图形界面安装和静默安装

    本文参考文章 http://blog.csdn.net/zonej/article/details/50680857 http://blog.csdn.net/tongzidane/article/d ...

  3. Java基础之equals方法和"= ="的区别

    ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符. 如果一个变量指向的数据是对象类型的 ...

  4. PHP三维数组拼装

    foreach ($records as $k => $v) { foreach ($records as $m => $n) { if ($v['days'] == $n['days'] ...

  5. python基本语法-函数与异常

    # -*- coding: utf-8 -*- #自定义函数 ''' def functionname( parameters ): "函数_文档字符串" function_sui ...

  6. 初识hadoop-历史及其家族(日志一)

    1,书籍推荐: 2,Google技术带来的东西: 下一篇:JDK的安装级其中遇到的问题

  7. WPF报表自定义通用可筛选列头-WPF特工队内部资料

    由于项目需要制作一个可通用的报表多行标题,且可实现各种类型的内容显示,包括文本.输入框.下拉框.多选框等(自定的显示内容可自行扩展),并支持参数绑定转换,效果如下: 源码结构 ColumnItem类: ...

  8. 深入浅出SOA

    前一阵换了份工作,来到新公司,恰好新同事问起SOA是什么,我随口说了几点,其实自己以前研究过,不过并没有详细的整理过,说的比较模糊,恰好周末,拿出点时间整理下以前对SOA的认知. SOA是什么?SOA ...

  9. jquery之效果操作

    jQuery操作之效果 效果一共分五大类 一.基本 二.滑动 三.淡入淡出 四.自定义 五.设置 咱们先来看一下基本类 一.基本又分为 show() hide() toggle() html代码 &l ...

  10. wget-文件下载工具

    阅读目录:详解wget命令-文件下载工具 安装wget 命令格式 命令功能 参数指南 启动参数 记录和输入文件参数 下载参数 目录参数 http选项参数 ftp选项参数 递归下载参数 递归下载中的包含 ...