uva 11181 - Probability|Given
2024-09-13 17:28:20
条件概率公式: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;
}
又比别人慢了点,它采取了有点过分...
版权声明:本文博客原创文章,博客,未经同意,不得转载。
最新文章
- 一个";如何使用示波器安全测试接市电电路板";的问题
- gravity与layout_gravity的区别
- UILabel用法
- [转]Perfmon - Windows 自带系统监测工具
- 【ToolGood.Words】之【StringSearch】字符串搜索——基于BFS算法
- 169	Majority Element [LeetCode Java实现]
- linux高可用集群(HA)原理详解(转载)
- Lua和Javascript差异对比
- Python正则表达式一
- 动态设置 GridView 列宽
- 数据库SQL语句中 查询选修了全部课程的学生的学号和姓名
- MySQL - 高可用性:少宕机即高可用?
- 2018-2019-2 网络对抗技术 20165337 Exp3 免杀原理与实践
- css3等待框
- TJOI2018 简要题解
- \x 开头编码的数据解码成中文
- SP1812 LCS2 - Longest Common Substring II
- CentOS 6.7 下 PostgreSQL 9.5 的安装与配置
- UITextField in a UITableViewCell
- JS DateTime 格式化
热门文章
- POJ 2329 (暴力+搜索bfs)
- 谈论高并发(十二)分析java.util.concurrent.atomic.AtomicStampedReference看看如何解决源代码CAS的ABA问题
- 【CTO辩论】移动创业大军:谁斗争or变更代理
- enq: TX - row lock contention 参数P1,P2,P3说明
- 一位OWin服务器新成员TinyFox
- sql server 汉字的长度
- strip 使用命令
- oracle_表分区
- 【Linux】Vim编辑器-批量注释与反注释
- java_JFrame_demo