博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva 11181 - Probability|Given
阅读量:4879 次
发布时间:2019-06-11

本文共 1460 字,大约阅读时间需要 4 分钟。

条件概率公式:P( A|B ) = P( AB ) / P( B )

表示在事件B发生的前提,事件A发生的可能性;

问题的:

复位事件E:r个人买东西;

事件Ei:文章i个人买东西;

的要求是P( Ei | E );

计算P( E ) 用全概率公式就可以。採用递归枚举出全部r个人买东西的情况,然后计算出其总的概率;

计算P( Ei ) 就是在上面递归枚举的过程中将选上第i个人的情况的概率加起来;(在这样的情况下,其概率就是:在E发生的前提下的概率)

代码:

#include
#include
#include
#include
using namespace std;const int maxn = 21;int n,r;double a[maxn],p[maxn],tot;int vis[maxn];void dfs(int cur,int cnt){ if(cur==n+1) { if(cnt==r) { double sum=1; for(int i=1;i<=n;i++) { if(vis[i]) sum*=a[i]; else sum*=(1-a[i]); } for(int i=1;i<=n;i++) { if(vis[i]) p[i]+=sum; } tot+=sum; } return; } vis[cur]=1; dfs(cur+1,cnt+1); vis[cur]=0; dfs(cur+1,cnt);}int main(){ int kase = 0; while(scanf("%d%d",&n,&r)!=EOF) { kase++; if(n==0&&r==0) break; for(int i=1;i<=n;i++) scanf("%lf",&a[i]); tot=0; memset(vis,0,sizeof(vis)); memset(p,0,sizeof(p)); dfs(1,0); printf("Case %d:\n",kase); for(int i=1;i<=n;i++) { printf("%lf\n",p[i]/tot); } } return 0;}
又比别人慢了点,它采取了有点过分...

版权声明:本文博客原创文章,博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/mengfanrong/p/4633521.html

你可能感兴趣的文章
有关交换机——熟悉原理是必须的【转载】
查看>>
ACM(数学问题)——UVa202:输入整数a和b(0≤a≤3000,1≤b≤3000),输出a/b的循环小数表示以及循环节长度。...
查看>>
【转】Android 读取doc文件
查看>>
js 数据绑定
查看>>
jsp的C标签一般使用方法以及js接收servlet中的对象及对象数字
查看>>
H5 简介
查看>>
window.frameElement的使用
查看>>
nl命令
查看>>
如何使用jQuery $.post() 方法实现前后台数据传递
查看>>
Using Flash Builder with Flash Professional
查看>>
jsp/post中文乱码问题
查看>>
C# 插入或删除word分页符
查看>>
数据库数据的查询----连接查询
查看>>
找不到可安装的ISAM ,asp.net读取数据丢失,解决的一列里有字符与数字的
查看>>
Java学习笔记三(对象的基本思想一)
查看>>
Java程序(文件操作)
查看>>
KMP算法 最小循环节 最大重复次数
查看>>
Proving Equivalences (强连通,缩点)
查看>>
并查集(模板)
查看>>
Cell Phone Networ (树形dp-最小支配集)
查看>>