Pagini recente » Cod sursa (job #1125706) | Cod sursa (job #3173577) | teqquila_shot | Cod sursa (job #2642728) | Cod sursa (job #1968747)
#include <fstream>
#include <vector>
using namespace std ;
ifstream cin ("combinari.in");
ofstream cout ("combinari.out");
/*void back (int target, int current, vector <int> &terms) { partitionarea unui numar
// cout << target << ' ' << current << '\n' ;
if (current > target) {
return ;
}
else if (current == target) {
for (auto x : terms) {
cout << x << ' ' ;
}
cout << '\n' ;
}
else {
int val = 1 ;
if (terms.size()) {
val = terms.back () ;
}
for (int i = val; i <= target - current ; ++ i) {
terms.push_back (i) ;
back (target, current + i, terms) ;
terms.pop_back() ;
}
}
}*/
/*void back (int n, vector <int> &terms, vector <bool> &viz) { permutari
if (terms.size() == n) {
for (auto x : terms) {
cout << x << ' ' ;
}
cout << '\n' ;
return ;
}
for (int i = 1 ; i <= n ; ++ i) {
if (viz [i] == 0) {
viz [i] = 1 ;
terms.push_back (i) ;
back (n, terms, viz) ;
terms.pop_back() ;
viz [i] = 0;
}
}
}*/
void back (int n, int k, vector <int> &terms, vector <bool> &viz) {
if (terms.size() == k) {
for (auto x : terms) {
cout << x << ' ' ;
}
cout << '\n' ;
return ;
}
int val = 1 ;
if (terms.size()) {
val = terms.back() + 1 ;
}
for (int i = val ; i <= n ; ++ i) {
if (viz [i] == 0) {
viz [i] = 1 ;
terms.push_back (i) ;
back (n, k, terms, viz) ;
terms.pop_back() ;
viz [i] = 0;
}
}
}
int main(int argc, char const *argv[])
{
int n, k;
cin >> n >> k ;
vector <int> v ;
vector <bool> viz (n + 1, false) ;
// back (5, 0, v) ;
/*for (int i = 1 ; i <= n ; ++ i ) {
back (i, v, viz) ;
cout << "====================================\n" ;
}*/
back (n, k, v, viz) ;
return 0;
}