uva 11181 - Probability|Given
来源:互联网 发布:lr下载中文版免费mac 编辑:程序博客网 时间:2024/05/03 11:24
条件概率公式:P( A|B ) = P( AB ) / P( B )
表示在事件B发生的前提下,事件A发生的概率;
对本道题:
设事件E:r个人买了东西;
事件Ei:第i个人买了东西;
则要求的是P( Ei | E );
计算P( E ) 用全概率公式即可,采用递归枚举出所有r个人买东西的情况,然后计算出其总的概率;
计算P( Ei ) 就是在上面递归枚举的过程中将选上第i个人的情况的概率加起来;(在这种情况下,其概率就是:在E发生的前提下的概率)
代码:
#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>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;}
又比人家慢了点,用时多了点...
0 0
- uva 11181 Probability|Given
- Probability Given, UVa 11181
- Uva 11181 - Probability|Given
- UVA 11181 Probability|Given
- UVa 11181 Probability|Given
- Uva--11181--Probability|Given
- uva 11181 Probability|Given
- UVA 11181 - Probability|Given
- uva 11181 - Probability|Given
- UVA 11181 Probability|Given
- uva 11181 Probability|Given
- UVa 11181 Probability|Given
- UVa 11181 Probability|Given
- UVA 11181 Probability|Given
- UVa 11181 Probability|Given
- UVa 11181 - Probability|Given 概率
- UVA 11181 Probability|Given 概率
- UVa--11181 Probability|Given(math)
- CAAnimation
- Two Sum
- 救基友记3
- 51Talk-Level 7 Unit 3 L3
- NotePad++自动缩进插件
- uva 11181 - Probability|Given
- java怎么将json字符串转换成list,map,object等
- Handler
- IOS 动画效果Animations
- hdu 4939
- 可自定接口的智能聊天机器人
- Median of Two Sorted Arrays
- 多线程
- 获得H.264视频分辨率的方法