Pagini recente » Cod sursa (job #1516343) | Cod sursa (job #183270) | Cod sursa (job #3269060) | Cod sursa (job #703215) | Cod sursa (job #1678872)
#include<iostream>
#include<fstream>
using namespace std;
int N,K;
float numere[25];
int poz;
//stack<float> result;
float data[25];
float probab;
float prob1=1;
/*
int combinari(int n,int k)
{
if (k==0) return 1;
else if (k>n) return 0;
else return (combinari(n-1,k)+combinari(n-1,k-1));
}
*/
/*
void combinationUtil(float numere[], float data[], int start, int end, int index, int k)
{
if (index == k) {
float prob=1;
//cout << poz << ": ";
for (int j=0; j<k; j++) {
prob = prob*data[j];
//cout << data[j] << " ";
}
poz++;
probab=probab+prob;
return;
}
for (int i=start; i<=end && end-i+1 >= k-index; i++)
{
data[index] = numere[i];
combinationUtil(numere, data, i+1, end, index+1, k);
}
}*/
void combinationUtil(int start, int end, int index, int k)
{
if (index == k) {
//float prob=1;
//cout << poz << ": ";
//for (int j=0; j<k; j++) {
// prob = prob*data[j];
// cout << data[j] << " ";
//}
//cout << '\n';
poz++;
probab=probab+prob1;
//prob1=1;
return;
}
for (int i=start; i<=end && end-i+1 >= k-index; i++)
{
if(index==0) prob1=1;
prob1 = prob1*numere[i];
data[index] = numere[i];
combinationUtil(i+1, end, index+1, k);
}
}
int main(){
ifstream f("dezastru.in");
ofstream out("dezastru.out");
f>>N>>K;
for (int i=0; i<N;i++) {
f>>numere[i];
}
//combinationUtil(a, data, 0, N-1, 0, K);
combinationUtil(0, N-1, 0, K);
out << (probab*K)/(float)(poz*K);
return 0;
}