• 11181


    11181 - Probability|Given

    题意:

    有 n 个人准备去逛超市,其中第 i 个人买东西的概率是 Pi 。逛完以后你得知有 r 个
    人买了东西,但不知道是哪 r 个人。请计算每个人实际买了东西的概率。输入 n(1≤n≤20)
    和 r(0≤r≤n),
    输出每个人实际买了东西的概率。

    思路:在高中数学有种 东西叫条件概率 

       大佬详解 

     1 #include <cctype>
     2 #include <cstdio>
     3 #include <iostream>
     4 
     5 using namespace std;
     6 
     7 typedef double LB;
     8 
     9 const int MAXN=50;
    10 
    11 int n,r,T,Case;
    12 
    13 LB p[MAXN],a[MAXN];
    14 
    15 LB Deno;
    16 
    17 bool vis[MAXN];
    18 
    19 void DFS(int num,double P,int cnt) {
    20     if(num==n+1) {
    21         if(cnt==r) {
    22             Deno+=P;
    23             for(int i=1;i<=n;++i) 
    24               if(vis[i]) p[i]+=P;
    25         }
    26         return;
    27     }
    28     vis[num]=true;
    29     DFS(num+1,P*a[num],cnt+1);
    30     vis[num]=false;
    31     DFS(num+1,P*(1-a[num]),cnt);
    32 }
    33 
    34 int hh() {
    35 //    freopen("haha.in","r",stdin);
    36 //    freopen("haha.out","w",stdout);
    37     while(scanf("%d%d",&n,&r)) {
    38         if(!n&&!r) break;
    39         for(int i=1;i<=20;++i) p[i]=.0,vis[i]=false,a[i]=.0;
    40         for(int i=1;i<=n;++i) cin>>a[i];
    41         Deno=.0;
    42         DFS(1,1.0,0);
    43         printf("Case %d:
    ",++Case);
    44         for(int i=1;i<=n;++i) printf("%.6lf
    ",p[i]/Deno);
    45     }
    46     return 0;
    47 }
    48 
    49 int sb=hh();
    50 int main(int argc,char**argv) {;}
    代码
  • 相关阅读:
    centos崩溃后如何修复
    乘法是啥
    接上篇—用spring注入DBbean,并使用maven管理
    技术产生价值
    技术?
    世界的本质是啥呢
    java-web 登陆功能
    对java的理解
    数学的历史
    使用jmeter测试接口
  • 原文地址:https://www.cnblogs.com/whistle13326/p/7606623.html
Copyright © 2020-2023  润新知