Pagini recente » Cod sursa (job #2838986) | Cod sursa (job #2371660) | Cod sursa (job #1905286) | Cod sursa (job #1978942) | Cod sursa (job #2850774)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
void printVect(vector<int> arr, int K, ofstream& fout) {
for (int i = 0; i < K; ++i)
fout << arr[i] << " ";
fout << "\n";
}
void combinatorics(vector<int>& arr, int n, int k, ofstream& fout) {
printVect(arr, k, fout);
while (arr[k - 1] + 1 <= n) {
++arr[k - 1];
printVect(arr, k, fout);
}
int ant = k - 2, post = k - 1;
while (ant >= 0) {
if (arr[post] - arr[ant] > 1)
break;
--ant;
--post;
}
if (ant == -1)
return;
arr[ant]++;
for (int i = ant + 1; i < k; ++i)
arr[i] = arr[i - 1] + 1;
combinatorics(arr, n, k, fout);
}
int main() {
ifstream fin("combinari.in");
ofstream fout("combinari.out");
int N, K;
fin >> N >> K;
vector<int> arr;
for (int i = 1; i <= K; ++i)
arr.push_back(i);
combinatorics(arr, N, K, fout);
return 0;
}