这道题不能凭感觉做了。要套公式

r个人买了东西叫事件E, 第i个人买东西的概率叫做事件Ei

求得是P(E|Ei), 则P(E|Ei)= P(E|Ei)/ P(E)

那么P(E)可以枚举求得, 用递归求排列,然后把每一种

排列的概率加起来就是总的概率

然后 P(E|Ei)就是要求在排列中当前这个事件会发生

所以可以发现在递归过程中可以同时求P(E|Ei)和P(E)

所以一遍枚举就ok了

Select Code
#include<cstdio>
#include<cstring>
#define REP(i, a, b) for(int i = (a); i < (b); i++)
using namespace std; const int MAXN = 30;
int n, r, buy[MAXN];
double p[MAXN], sum[MAXN]; void dfs(int d, int c, double prob)
{
if(c > r || d - c > n - r) return;
if(d == n)
{
sum[n] += prob;
REP(i, 0, n)
if(buy[i])
sum[i] += prob;
return;
} buy[d] = 0;
dfs(d + 1, c, prob * (1 - p[d]));
buy[d] = 1;
dfs(d + 1, c + 1, prob * p[d]);
} int main()
{
int kase = 0;
while(~scanf("%d%d", &n, &r) && n)
{
REP(i, 0, n) scanf("%lf", &p[i]);
memset(sum, 0, sizeof(sum));
dfs(0, 0, 1.0);
printf("Case %d:\n", ++kase);
REP(i, 0, n) printf("%.6lf\n", sum[i] / sum[n]);
}
return 0;
}

最新文章

  1. C#中DateTime.Now.ToString()
  2. git 常见命令
  3. Python基础之函数等等
  4. iOS Application Life Cycle 应用程序生命周期
  5. Android开发:如何实现TCP和UDP传输
  6. ASP.Net 验证视图状态 MAC 失败
  7. java随机数生成器
  8. ecshop二次开发之购物车常见问题
  9. 图像资源Images Assets
  10. 关于JS的return false
  11. Pixel Recurrent Neural Networks翻译
  12. 51-node-1649齐头并进(最短路)
  13. react material-ui 添加jss插件
  14. centos7 安装oracle11g
  15. js 稍微判断下浏览器 pc 还是手机
  16. Linux:FHS标准
  17. python记录_day08
  18. 正则表达式的使用(C#)
  19. AngularJS入门讲解3:$http服务和路由讲解
  20. CSS 学习路线(二)选择器

热门文章

  1. gcc posix sjij for MSYS 9.2.1+
  2. CentOS 6 系统基础配置
  3. ubuntu install themes &amp;&amp; use it
  4. maridb 主从复制
  5. ctf网址,工具 汇总 组会
  6. 注入之Mysql-Getshell思路
  7. 【DSP开发】【Linux开发】Linux下PCI设备驱动程序开发
  8. flask add_url_rule的使用
  9. jump用户管理命令
  10. 【DP 好题】Kick Start 2019 Round C Catch Some