条件概率公式: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;
}

又比别人慢了点,它采取了有点过分...

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

最新文章

  1. 一个&quot;如何使用示波器安全测试接市电电路板&quot;的问题
  2. gravity与layout_gravity的区别
  3. UILabel用法
  4. [转]Perfmon - Windows 自带系统监测工具
  5. 【ToolGood.Words】之【StringSearch】字符串搜索——基于BFS算法
  6. 169 Majority Element [LeetCode Java实现]
  7. linux高可用集群(HA)原理详解(转载)
  8. Lua和Javascript差异对比
  9. Python正则表达式一
  10. 动态设置 GridView 列宽
  11. 数据库SQL语句中 查询选修了全部课程的学生的学号和姓名
  12. MySQL - 高可用性:少宕机即高可用?
  13. 2018-2019-2 网络对抗技术 20165337 Exp3 免杀原理与实践
  14. css3等待框
  15. TJOI2018 简要题解
  16. \x 开头编码的数据解码成中文
  17. SP1812 LCS2 - Longest Common Substring II
  18. CentOS 6.7 下 PostgreSQL 9.5 的安装与配置
  19. UITextField in a UITableViewCell
  20. JS DateTime 格式化

热门文章

  1. POJ 2329 (暴力+搜索bfs)
  2. 谈论高并发(十二)分析java.util.concurrent.atomic.AtomicStampedReference看看如何解决源代码CAS的ABA问题
  3. 【CTO辩论】移动创业大军:谁斗争or变更代理
  4. enq: TX - row lock contention 参数P1,P2,P3说明
  5. 一位OWin服务器新成员TinyFox
  6. sql server 汉字的长度
  7. strip 使用命令
  8. oracle_表分区
  9. 【Linux】Vim编辑器-批量注释与反注释
  10. java_JFrame_demo