Pagini recente » Cod sursa (job #1164291) | Cod sursa (job #474957) | Cod sursa (job #1325998) | Cod sursa (job #605644) | Cod sursa (job #2659939)
#include <fstream>
#include <iomanip>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int n, m;
float sol[26];
int viz[26];
int nr_posibilitati;
float suma = 0;
float numere[26];
void citire()
{
fin >> n >> m;
for(int i = 0; i < n; i++)
fin >> numere[i];
}
void backtracking(int k)
{
if(k == m)
{
float produs = 1;
for(int i = 0; i < k; i++)
produs*=sol[i];
suma+=(produs);
nr_posibilitati++;
return;
}
for(int i = 0; i < n; i++)
{
if(viz[i] == 0)
{
if(k == 0 || sol[k - 1] < numere[i])
{
viz[i] = 1;
sol[k] = numere[i];
backtracking(k+1);
viz[i] = 0;
}
}
}
}
int main()
{
citire();
backtracking(0);
fout << fixed << setprecision(6) << float(suma/nr_posibilitati);
return 0;
}