博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa11181 Probability|Given
阅读量:6880 次
发布时间:2019-06-26

本文共 1177 字,大约阅读时间需要 3 分钟。

暴力算概率即可。

用这个式子:P(Ai|B)=P(AiB)/P(B)

不过。。貌似有递推的常数做法?

 

#include 
#include
#include
#include
using namespace std;const int MAXN = 20 + 1;int N, R;double p[MAXN], a[MAXN];inline int bitcount(int x){
return x == 0 ? 0 : (x & 1) + bitcount(x >> 1);}int main(){ int t = 0; while(cin>>N>>R, (N + R)) { for(int i = 0; i < N; i++) scanf("%lf", &p[i]); memset(a, 0, sizeof(a)); printf("Case %d:\n", ++t); if(R == 0) { for(int i = 0; i < N; i++) puts("0.000000"); continue; } double rp = 0.0; for(int state = 0; state < (1 << N); state++) { int cnt = bitcount(state); if(cnt != R) continue; double tmp = 1.0; for(int i = 0; i < N; i++) if(state & (1 << i)) tmp *= p[i]; else tmp *= (1 - p[i]); rp += tmp; for(int i = 0; i < N; i++) if(state & (1 << i)) a[i] += tmp; } for(int i = 0; i < N; i++) printf("%.6lf\n", a[i] / rp); } return 0;}

 

转载于:https://www.cnblogs.com/wsmrxc/p/9296047.html

你可能感兴趣的文章