• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            pku1217 FOUR QUARTERS 概率遞推

            題意:
            A、B倆游戲者,每輪倆人分別拋倆硬幣,然后根據結果結算該輪得分:


            A勝B即A的點數大于B的點數。
            然后輸出20輪內A贏B、B贏A以及打平的概率。

            解答:
            這題和一般的概率題不同,二者的點數是不獨立的,所以要用一個pair和map存儲他們的概率。
            結合代碼來說吧  
             1 # include <cstdio>
             2 # include <cstring>
             3 using namespace std;
             4 # include <map>
             5 # define encode(a,b) (((a)<<6)|(b))
             6 # define getp1(a) ((a)>>6)
             7 # define getp2(a) ((a)&63)
             8 int main()
             9 {
            10     double res[21][2];
            11     //p[i][j],A得到i-1分,B得到j-1分的概率,以后為了處理方便,可以將得-1,0,1,2分看作得0,1,2,3分
            12     double p[4][4]={{0,0,0,1.0/16},{1.0/16,3.0/8,1.0/8,0},{1.0/8,3.0/16,0,0},{1.0/16,0,0,0}};
            13     memset(res,0,sizeof(res));
            14     map<int,double> table[21];
            15     table[0][encode(0,0)]=1.0;//邊界情況:A得0分,B得0分的概率為1
            16     for(int step=1;step<=21;step++)
            17     {
            18         for(map<int,double>::iterator ita=table[step-1].begin();ita!=table[step-1].end();ita++)
            19         {
            20             int p1=getp1(ita->first),p2=getp2(ita->first);
            21             if(step!=21)
            22             {
            23 
            24                 for(int i=0;i<4;i++)
            25                     for(int j=0;j<4;j++)
            26                         table[step][encode(p1+i,p2+j)]+=(ita->second)*p[i][j];//狀態轉移
            27             }
            28             if(p1<p2)//累加A輸給B的概率
            29                 res[step-1][0]+=ita->second;
            30             else if(p1==p2)//累加打平的概率
            31                 res[step-1][1]+=ita->second;
            32         }
            33     }
            34     printf("Round   A wins    B wins    Tie\n");
            35     for(int i=1;i<=20;i++)//輸出格式注意,如果需要在printf內輸出%的話要用%%
            36         printf("%5d%10.4f%%%9.4f%%%9.4f%%\n",i,(1-res[i][0]-res[i][1])*100,res[i][0]*100,res[i][1]*100);
            37     return 0;
            38 }
            39 


            posted on 2010-11-06 19:52 yzhw 閱讀(174) 評論(0)  編輯 收藏 引用 所屬分類: combination math

            <2010年12月>
            2829301234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            導航

            統計

            公告

            統計系統

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            久久精品无码一区二区app| 久久天天躁狠狠躁夜夜不卡| 国产精品美女久久久久久2018| 狠狠色综合网站久久久久久久高清| 色综合久久无码五十路人妻| 久久亚洲精品视频| 久久久午夜精品| 国内精品伊人久久久久| 日韩欧美亚洲国产精品字幕久久久| 久久亚洲日韩看片无码| 国产精品久久久天天影视香蕉| 亚洲国产日韩综合久久精品| 日韩乱码人妻无码中文字幕久久| 91精品国产高清久久久久久91 | 久久精品夜色噜噜亚洲A∨| 欧美亚洲另类久久综合婷婷| 亚洲精品白浆高清久久久久久| 国产一区二区精品久久凹凸| 国内精品久久久人妻中文字幕| 蜜臀久久99精品久久久久久| 亚洲国产精品一区二区久久| 久久99国产精品久久99小说| 国内精品久久久久| 久久国产精品久久国产精品| 久久精品无码专区免费青青| 久久久久久久精品妇女99| 久久九九久精品国产| 国产福利电影一区二区三区久久久久成人精品综合 | 亚洲AV日韩AV永久无码久久| 色天使久久综合网天天| 国产成人精品久久亚洲| 久久国产高清字幕中文| 久久精品中文字幕久久| 久久久久久亚洲Av无码精品专口 | 久久香蕉国产线看观看精品yw | 国产精品中文久久久久久久| 精品久久久久久久中文字幕| 久久久久国产一区二区| 蜜臀久久99精品久久久久久| 2020久久精品亚洲热综合一本| 亚洲&#228;v永久无码精品天堂久久 |