• <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倆游戲者,每輪倆人分別拋倆硬幣,然后根據(jù)結(jié)果結(jié)算該輪得分:


            A勝B即A的點(diǎn)數(shù)大于B的點(diǎn)數(shù)。
            然后輸出20輪內(nèi)A贏B、B贏A以及打平的概率。

            解答:
            這題和一般的概率題不同,二者的點(diǎn)數(shù)是不獨(dú)立的,所以要用一個(gè)pair和map存儲他們的概率。
            結(jié)合代碼來說吧  
             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(luò)-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];//狀態(tài)轉(zhuǎn)移
            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內(nèi)輸出%的話要用%%
            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 閱讀(166) 評論(0)  編輯 收藏 引用 所屬分類: combination math

            <2011年1月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            導(dǎo)航

            統(tǒng)計(jì)

            公告

            統(tǒng)計(jì)系統(tǒng)

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            成人午夜精品久久久久久久小说| 久久久久久噜噜精品免费直播 | MM131亚洲国产美女久久| 97精品伊人久久大香线蕉| 亚洲精品成人久久久| 久久久久亚洲AV片无码下载蜜桃| 久久国产免费观看精品3| 国产精品伊人久久伊人电影| 亚洲伊人久久综合影院| 久久婷婷久久一区二区三区| 久久频这里精品99香蕉久| 欧美亚洲另类久久综合| 久久综合久久美利坚合众国| 久久精品这里热有精品| 国产成人无码精品久久久性色| 国产欧美一区二区久久| 亚洲AV无码1区2区久久| 久久人人爽人人爽AV片| 国产精品青草久久久久婷婷| 中文字幕精品久久久久人妻| 婷婷久久综合九色综合98| 久久热这里只有精品在线观看| 九九久久精品无码专区| 久久久国产精品福利免费| 日韩乱码人妻无码中文字幕久久| 久久无码国产| 日韩精品久久久久久| 久久精品一区二区三区不卡| 久久亚洲精品国产精品| 亚洲综合伊人久久综合| 亚洲欧美日韩中文久久| 国产A级毛片久久久精品毛片| 久久综合亚洲色HEZYO国产| 精品无码久久久久久国产| 精品久久久久久无码人妻热| 夜夜亚洲天天久久| 久久久久久久综合日本亚洲| av无码久久久久不卡免费网站| 久久久久亚洲AV无码永不| 精品久久人妻av中文字幕| 国产精品久久久久久吹潮|