Pagini recente » Cod sursa (job #389683) | Cod sursa (job #2491886) | Cod sursa (job #2447364) | Cod sursa (job #2907561) | Cod sursa (job #1677900)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
std::ofstream out("combinari.out");
void generateOneByOne(std::vector<int> &vec, int aux[], int start,
int end, int index, int k)
{
// are dimensiunea ceruta => afisam combinarea
if(index == k)
{
for(int i = 0; i < k; i++)
{
out << aux[i] << " ";
}
out << "\n";
}
int i = start;
while(i <= end && end - i + 1 >= k - index)
{
aux[index] = vec[i];
generateOneByOne(vec, aux, i + 1, end, index + 1, k);
// eliminam duplicatele
while(vec[i] == vec[i + 1])
{
i++;
}
i++;
}
}
void generateCombinations(vector<int> &vec, int dim, int k)
{
int aux[k];
std::sort(vec.begin(), vec.end());
generateOneByOne(vec, aux, 0, dim - 1, 0, k);
}
int main()
{
std::ifstream fin("combinari.in");
int n, k;
fin >> n;
fin >> k;
vector<int> vec;
for(int i = 1 ; i < n + 1; i++)
{
vec.push_back(i);
}
generateCombinations(vec, n, k);
fin.close(); out.close();
return 0;
}