建立站点的作用,东莞建站模板,wordpress前端文章编辑器,美发网站带手机版题目要求条件概率,用贝叶斯公式我们很容易得到我们需要求r个人买东西的概率和每个人买东西的条件下其他r-1个人买东西的概率.我们递归枚举,每当枚举到r个人买东西的时候,我们加入到r个人买东西的概率中(全概率公式),然后对于这r个人,除去自己买东西的概率就是其他r-1个人买东西…题目要求条件概率,用贝叶斯公式我们很容易得到我们需要求r个人买东西的概率和每个人买东西的条件下其他r-1个人买东西的概率.我们递归枚举,每当枚举到r个人买东西的时候,我们加入到r个人买东西的概率中(全概率公式),然后对于这r个人,除去自己买东西的概率就是其他r-1个人买东西的概率(当然不是全部,加上就可以了).因此一遍枚举就可以了.
记得不买东西也是有概率的
#includecstdio
#includecstring
#includealgorithm
#includeclimits
#includecctype
#includequeue
#includesetusing namespace std;typedef long long ll;
const int INF0x3f3f3f3f;
const int MAXN25;int n,r;
double p[MAXN];
bool vis[MAXN];
double sum[MAXN];
double tot;void dfs(int cur,int left)
{if(left0){double tmp1.0;for(int i1;in;i){if(vis[i]){tmp*p[i];}else{tmp*(1-p[i]);}}tottmp;for(int i1;in;i){if(vis[i]){sum[i]tmp/p[i];}}return;}for(int icur;in;i){if(n-i1left) return;vis[i]true;dfs(i1,left-1);vis[i]false;}
}int main()
{int Case0;while(~scanf(%d%d,n,r) (n||r)){for(int i1;in;i)scanf(%lf,p[i]);memset(vis,0,sizeof(vis));memset(sum,0,sizeof(sum));tot0;dfs(1,r);printf(Case %d:\n,Case);for(int i1;in;i){printf(%.6f\n,sum[i]*p[i]/tot);}}return 0;
}