分析:
P
(
A
∣
B
)
=
P
(
A
∩
B
)
P
(
B
)
P(A|B)=\frac{P(A∩B)}{P(B)}
P(A∣B)=P(B)P(A∩B)
B
B
B是选
r
r
r个人
A
A
A是
r
r
r个人中 钦定的一个
i
i
i
对于
i
i
i 他的概率就应乘上
p
i
p_i
pi 其余的即
(
1
−
p
i
)
(1-p_i)
(1−pi) 可以通过
d
f
s
dfs
dfs枚举所有情况 最后累加
CODE:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#define reg register
using namespace std;
typedef long long ll;
const int N=25;
int n,r,vis[N];
double p[N],tot,ans[N];
void dfs(int dep,int k)
{
if(k==r)
{
double res=1.0;
for(int i=1;i<=n;i++)
(vis[i])?res*=p[i]:res*=(1-p[i]);
tot+=res;
for(int i=1;i<=n;i++)
if(vis[i]) ans[i]+=res;
}
for(int i=dep+1;i<=n;i++)
{
vis[i]=1;
dfs(i,k+1);
vis[i]=0;
}
}
int main(){
scanf("%d%d",&n,&r);
for(int i=1,x;i<=n;i++)
{
scanf("%d",&x);
p[i]=1.0*x/100.0;
}
dfs(0,0);
for(int i=1;i<=n;i++)
printf("%.6lf ",ans[i]/tot);
return 0;
}