Pagini recente » Cod sursa (job #2348962) | Cod sursa (job #918023) | Cod sursa (job #994999) | Cod sursa (job #2447394) | Cod sursa (job #727190)
Cod sursa(job #727190)
# include <iostream>
# include <fstream>
# include <iomanip>
# define Nmax 25
# define Egal(a,b) ((a)==(b)?true:false)
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int st[Nmax];
int n, k,nr = 0;
double prob = 0;
double pr[Nmax];
void citire ()
{
f >> n >> k;
for (int j=1; j<=n; j++)
{
f >> pr[j];
}
f.close();
}
bool valid (int m)
{
for(int j=1; j<m;j++)
{
if (st[j] == st[m])
return false;
}
return true;
}
void calcul ()
{
double pr1 = pr[st[1]];
cout << st[1] << ' ';
for (int j=2; j<=k; j++)
{
pr1 = (double) pr1 * pr[st[j]];
cout << st[j] << ' ';
}
cout << '\n';
++nr;
prob += (double) pr1;
}
void scriere ()
{
g << setprecision (6) << prob / nr << '\n';
g.close ();
}
void bktr (int niv)
{
for (int i=1; i<=n; i++)
{
st[niv] = i;
if (valid(niv))
{
if (niv == k)
calcul();
else
bktr(niv+1);
}
}
}
int main ()
{
citire();
bktr(1);
scriere();
return 0;
}