Pagini recente » Cod sursa (job #2038042) | Cod sursa (job #1786414) | Cod sursa (job #2560921) | Cod sursa (job #2205987) | Cod sursa (job #1786861)
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int a[26],b[26];
double v[26], p, sol, nr; //v e vectorul probabilitatilor, gen
inline void combinari(int k,int n,int m, double p){
int i;
if(k-1 == m){
sol=sol+p;
++nr;
}
else{
for(i=1;i<=n; i++)
if(!b[i] && a[k-1] < i){
a[k] = i;
b[i] = 1;
combinari(k+1,n,m,p*v[i]); //v[a[i]] => probabilitatea v a evenimentului a, inmultim fiecare combinatie de probabilitati
b[i] = 0;
}
}
}
int main()
{
fstream in("dezastru.in");
ofstream out("dezastru.out");
int j,n,m;
in>>n>>m;
for(j=1;j<=n;j++)
in>>v[j];
combinari(1,n,m,1);
out<<setprecision(6)<<sol/nr;
in.close();
out.close();
return 0;
}