zoukankan      html  css  js  c++  java
  • 单人纸牌_NOI导刊2011提高(04)

    单人纸牌

    时间限制: 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[5][5][5][5][5][5][5][5][5];
    int j[10],s[10];
    char a[11][5];
    int main()
    {
        int i,k;
        for(i=1; i<=9; i++)
        {
            char s[15];
            gets(s+1);
            a[i][1]=s[10];
            a[i][2]=s[7];
            a[i][3]=s[4];
            a[i][4]=s[1];
        }
        f[0][0][0][0][0][0][0][0][0]=1;
        for(j[1]=0; j[1]<=4; j[1]++)
        {
            for(j[2]=0; j[2]<=4; j[2]++)
            {
                for(j[3]=0; j[3]<=4; j[3]++)
                {
                    for(j[4]=0; j[4]<=4; j[4]++)
                    {
                        for(j[5]=0; j[5]<=4; j[5]++)
                        {
                            for(j[6]=0; j[6]<=4; j[6]++)
                            {
                                for(j[7]=0; j[7]<=4; j[7]++)
                                {
                                    for(j[8]=0; j[8]<=4; j[8]++)
                                    {
                                        for(j[9]=0; j[9]<=4; j[9]++)
                                        {
                                            if(f[j[1]][j[2]][j[3]][j[4]][j[5]][j[6]][j[7]][j[8]][j[9]]!=0)
                                            {
                                                double cnt=0;
                                                for(i=1; i<=9; i++)
                                                    for(k=i+1; k<=9; k++)
                                                        if(j[i]+1<=4&&j[k]+1<=4&&a[i][j[i]+1]==a[k][j[k]+1])cnt++;
                                                if(cnt==0)continue;
                                                for(i=1; i<=9; i++)
                                                {
                                                    for(k=i+1; k<=9; k++)
                                                    {
                                                        if(j[i]+1<=4&&j[k]+1<=4&&a[i][j[i]+1]==a[k][j[k]+1])
                                                        {
                                                            s[i]++;s[k]++;
                                                            f[j[1]+s[1]][j[2]+s[2]][j[3]+s[3]][j[4]+s[4]][j[5]+s[5]][j[6]+s[6]][j[7]+s[7]][j[8]+s[8]][j[9]+s[9]]+=f[j[1]][j[2]][j[3]][j[4]][j[5]][j[6]][j[7]][j[8]][j[9]]/cnt;
                                                            s[i]--;s[k]--;
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        printf("%.3lf",f[4][4][4][4][4][4][4][4][4]);
        return 0;
    }
  • 相关阅读:
    想你,却不能告诉你
    【缅怀妈妈系列诗歌】之十七:叩别妈妈
    80后的大旗正矗立在中华大地上迎风飘扬
    【缅怀妈妈系列诗歌】之九:月祭母亲
    【缅怀妈妈系列诗歌】之十一:妈妈,我们回家
    工欲善其事,必先利其器——图文并茂详解VisualStudio使用技巧二 (转)
    工欲善其事,必先利其器——图文并茂详解VisualStudio使用技巧一 (转)
    老婆,我会好好爱你的
    【缅怀妈妈系列诗歌】之十:妈妈,孩儿答应您
    【缅怀妈妈系列诗歌】之八:妈妈,我不会忘记
  • 原文地址:https://www.cnblogs.com/huangdalaofighting/p/7059049.html
Copyright © 2011-2022 走看看