筆試刷題-百度2018-06-24

題目描述:


/**
ss請cc來家里釣魚,魚塘可劃分為n*m的格子,每個格子有不同的概率釣上魚,
cc一直在坐標(x,y)的格子釣魚,
而ss每分鐘隨機釣一個格子。
問t分鐘后他們誰至少釣到一條魚的概率大?為多少?

輸入描述:
第一行五個整數n,m,x,y,t(1≤n,m,t≤1000,1≤x≤n,1≤y≤m);
接下來為一個n*m的矩陣,每行m個一位小數,共n行,
第i行第j個數代表坐標為(i,j)的格子釣到魚的概率為p(0≤p≤1)

輸出描述:
輸出兩行。第一行為概率大的人的名字(cc/ss/equal),第二行為這個概率(保留2位小數)

輸入例子1:
2 2 1 1 1
0.2 0.1
0.1 0.4

輸出例子1:
equal
0.20
*/

思路如下:

設pss為ss一分鐘內能吊到魚概率,根據題意由于其隨機一個釣魚,那么其吊到魚概率為
概率矩陣和的平均數

設pcc為cc一分鐘內能吊到魚概率,根據題目意為概率矩陣最右下角的概率

那么對于一個一分鐘能吊到魚概率p的人來說
一分鐘都沒魚概率為1-p
那么t分鐘沒魚,概率游乘法原理得到為 (1-p)^t

代碼如下:


#include<stdio.h>
#include<iostream>

#define MAX_M 1005
#define MAX_N 1005

using namespace std;

double matrix[MAX_M][MAX_N];

int main(){
    int m, n, x, y, t;
    while(scanf("%d%d%d%d%d", &m, &n, &x, &y, &t)==5){
        double pcc=0, pss=0, pccNone=1.0, pssNone=1.0, pres;
        for(int i=0; i<m; i++){
            for(int j=0; j<n; j++){
                scanf("%lf", &matrix[i][j]);
                pss+=matrix[i][j];
            }
        }
        pcc=matrix[x-1][y-1];
        pss=pss/(1.0*m*n);
        for(int i=0; i<t; i++){
            pccNone*=(1.0-pcc);
            pssNone*=(1.0-pss);
        }
        if(pccNone<pssNone){
            pres=1.0-pccNone;
            printf("cc\n");
        }
        else if(pccNone>pssNone){
            pres=1.0-pssNone;
            printf("ss\n");
        }
        else{
            pres=1.0-pccNone;
            printf("equal\n");
        }
        printf("%.2lf\n", pres);
    }
    return 0;
}


?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 你的數學直覺怎么樣?你能憑借直覺,迅速地判斷出誰的概率大,誰的概率小嗎?下面就是 26 個這樣的問題。如果你感興趣...
    cnnjzc閱讀 6,982評論 0 12
  • 飯前酒一杯,飯后茶一盞。樂得自悠然,快樂又似仙。莫道世蒼桑,莫言它山美。風光在心里,秀麗在遠方。
    甘朝武閱讀 336評論 0 0
  • 后人有所謂“孔門三世出妻”。歷代學者考究其說真偽,仍沒有形成定論。例如,朱熹《朱子語類》、宋羅璧《羅氏識遺》、清袁...
    賽德傳播閱讀 4,198評論 0 0
  • 加入剽悍行動營是一場對自己的一次打賭,賭!那個叫小許的人,能不能堅持一個月,拼盡全力去做去行動。 這一場賭博,小許...
    許小冷閱讀 195評論 2 5