fork download
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <iterator>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. int main() {
  9. const vector<int> set = { 0, 1, 2, 3 };
  10. const auto k = 3;
  11.  
  12. vector<vector<int>::const_iterator> its(k, cbegin(set));
  13. vector<bool> ns(k);
  14.  
  15. for(int i = k - 1; its.front() != cend(set); its[i] = next(its[i], ns[i] ? -1 : 1), i = k - 1) {
  16. transform(cbegin(its), cend(its), ostream_iterator<int>(cout), [](const auto& i) { return *i; });
  17.  
  18. cout << endl;
  19.  
  20. while (i > 0 && (!ns[i] && its[i] == prev(cend(set)) || ns[i] && its[i] == cbegin(set))) {
  21. ns[i] = !ns[i];
  22. --i;
  23. }
  24. }
  25. }
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
000
001
002
003
013
012
011
010
020
021
022
023
033
032
031
030
130
131
132
133
123
122
121
120
110
111
112
113
103
102
101
100
200
201
202
203
213
212
211
210
220
221
222
223
233
232
231
230
330
331
332
333
323
322
321
320
310
311
312
313
303
302
301
300