uva 11181 概率与排列

来源:互联网 发布:betterzip for mac安装 编辑:程序博客网 时间:2024/05/02 08:29
#include <bits/stdc++.h>using namespace std;int n, r, kase;double inp[22], Pe[22];#define REP(i,n) for(int i=0;i<(n);i++)int main(int argc, char const *argv[]){while (cin >> n >> r && n){double Ptal = 0; string str;memset(Pe, 0, sizeof(Pe));REP(i, n) cin >> inp[i], str += (i < n - r ? '0' : '1');do{double pi = 1;REP(j, n) pi *= (str[j] - '0' ? inp[j] : 1 - inp[j]);Ptal += pi;REP(j, n) Pe[j] += (str[j] - '0' ? pi : 0);}while (next_permutation(str.begin(), str.end()));printf("Case %d:\n", ++kase);REP(i, n) printf("%.6f\n", Pe[i] / Ptal);}return 0;}


按照树上的写法,枚举所有的排列,运用next_permutation函数

0 0
原创粉丝点击