Pagini recente » Cod sursa (job #2692153) | Cod sursa (job #2921452) | Cod sursa (job #9424) | Cod sursa (job #1863464) | Cod sursa (job #416525)
Cod sursa(job #416525)
#include<stdio.h>
const int N_max=26;
int n,k,st[N_max],viz[N_max],nr=0;
float pb[N_max],sum=0,prod=1;
void bkt(int p)
{
int i;
if(p==k+1)
{//calc probabilitate ,actualizeaza suma
nr++; //prod=1;
// for(i=1;i<=k;++i) prod*=pb[st[i]];
sum+=prod;
}
else
{
for(i=1;i<=n;++i)
if(viz[i]==0 && st[p-1]<i)
{
viz[i]=1; st[p]=i;
prod*=pb[i];
bkt(p+1); viz[i]=0; prod/=pb[i];
}
}
}
int main()
{
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
scanf("%d%d",&n,&k);
for(int i=1;i<=n;++i)
scanf("%f",&pb[i]);
bkt(1);
printf("%f\n",sum/nr);
return 0;
}