Pagini recente » Cod sursa (job #2929961) | Cod sursa (job #470237) | Cod sursa (job #237919) | Cod sursa (job #649955) | Cod sursa (job #273198)
Cod sursa(job #273198)
#include <stdio.h>
short int v[30];
double suma, prob[30];
double p;
short int n,k;
/*
int exista( int t)
{
if (v[t]<n)
return 1;
return 0;
}*/
inline int cond( int t)
{
int i;
for(i=0;i<t;i++)
if(v[i]>=v[t]) //verificam sa fie diferit si sa fie mai mare ca sa fie unica solutia
return 0;
return 1;
}
/*
int solutie( int t)
{
if(t==k)
return 1;
return 0;
}*/
/*
void afisare(int t)
{
int i;
double temp;
temp =1;
for(i=0;i<t;++i)
temp*=prob[v[i]];
suma+=temp;
++p;
}*/
void bkt(int t)
{
int i;
if(t == k)
{
int i;
double temp;
temp =1;
for(i=0;i<t;++i)
temp*=prob[v[i]];
suma+=temp;
++p;
}
else
for(i=0;i<n;i++) //for de la prima valoare valida la ultima valoare valida
{
v[t] = i; //aici dami valorile posibile
if(cond(t)) //verificare conditii pentru valoarea curenta
bkt(t+1);
}
}
int main()
{
int i;
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
scanf("%hd %hd\n",&n,&k);
for(i=0;i<n;i++)
scanf("%lf",&prob[i]);
suma=0;
bkt(0);
//printf("%lf\n",p);
//printf("%lf\n",suma);
suma=suma/p;
printf("%lf",suma);
return 0;
}