Pagini recente » Cod sursa (job #2898015) | Cod sursa (job #1783009) | Cod sursa (job #1586001) | Cod sursa (job #1159365) | Cod sursa (job #642821)
Cod sursa(job #642821)
#include<iostream>
#include<fstream>
using namespace std;
fstream f("dezastru.in",ios::in);
fstream g("dezastru.out",ios::out);
int n,r,st[100];
float p[100],prob=0,fact=1;
void tipar()
{
int i;
float produs=1;
for(i=0; i<r; i++)
produs*=p[st[i]];
prob+=produs/fact;
}
void init(int k)
{
st[k]=-1;
}
int succesor(int k)
{
if(st[k]<n-1)
{
st[k]++;
return 1;
}
else
return 0;
}
int valid(int k)
{
int i;
for(i=0; i<k; i++)
if(st[i]==st[k])
return 0;
return 1;
}
void back(int k)
{
if(k==n)
tipar();
else
{
init(k);
while(succesor(k))
if(valid(k))
back(k+1);
}
}
int main()
{
int i;
f>>n>>r;
for(i=0; i<n; i++)
f>>p[i];
for(i=1; i<=n; i++)
fact*=i;
back(0);
g<<prob;
f.close(); g.close();
return 0;
}