fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. bool NextSet(int *a, int n, int m)
  5. {
  6. int j = m - 1;
  7. while (a[j] == n && j >= 0) j--;
  8. if (j < 0) return false;
  9. if (a[j] >= n)
  10. j--;
  11. a[j]++;
  12. if (j == m - 1) return true;
  13. for (int k = j + 1; k < m; k++)
  14. a[k] = a[j];
  15. return true;
  16. }
  17. void Print(int *a, int n, char *u)
  18. {
  19. static int num = 1;
  20. cout.width(3);
  21. cout << num++ << ": ";
  22. for (int i = 0; i < n; i++)
  23. cout << u[a[i]-1] << " ";
  24. cout << endl;
  25. }
  26. int main()
  27. {
  28. char u[] = {'a', 'b', 'k', 'd', 'h', 'f'};
  29. int n=6, m=4, *a;
  30. // int h = n > m ? n : m; // размер массива а выбирается как max(n,m)
  31. a = new int[n];
  32. for (int i = 0; i < n; i++)
  33. a[i] = 1;
  34. Print(a, m, u);
  35. while (NextSet(a, n, m))
  36. Print(a, m, u);
  37. cin.get(); cin.get();
  38. return 0;
  39. }
  40.  
Success #stdin #stdout 0s 4520KB
stdin
Standard input is empty
stdout
  1: a a a a 
  2: a a a b 
  3: a a a k 
  4: a a a d 
  5: a a a h 
  6: a a a f 
  7: a a b b 
  8: a a b k 
  9: a a b d 
 10: a a b h 
 11: a a b f 
 12: a a k k 
 13: a a k d 
 14: a a k h 
 15: a a k f 
 16: a a d d 
 17: a a d h 
 18: a a d f 
 19: a a h h 
 20: a a h f 
 21: a a f f 
 22: a b b b 
 23: a b b k 
 24: a b b d 
 25: a b b h 
 26: a b b f 
 27: a b k k 
 28: a b k d 
 29: a b k h 
 30: a b k f 
 31: a b d d 
 32: a b d h 
 33: a b d f 
 34: a b h h 
 35: a b h f 
 36: a b f f 
 37: a k k k 
 38: a k k d 
 39: a k k h 
 40: a k k f 
 41: a k d d 
 42: a k d h 
 43: a k d f 
 44: a k h h 
 45: a k h f 
 46: a k f f 
 47: a d d d 
 48: a d d h 
 49: a d d f 
 50: a d h h 
 51: a d h f 
 52: a d f f 
 53: a h h h 
 54: a h h f 
 55: a h f f 
 56: a f f f 
 57: b b b b 
 58: b b b k 
 59: b b b d 
 60: b b b h 
 61: b b b f 
 62: b b k k 
 63: b b k d 
 64: b b k h 
 65: b b k f 
 66: b b d d 
 67: b b d h 
 68: b b d f 
 69: b b h h 
 70: b b h f 
 71: b b f f 
 72: b k k k 
 73: b k k d 
 74: b k k h 
 75: b k k f 
 76: b k d d 
 77: b k d h 
 78: b k d f 
 79: b k h h 
 80: b k h f 
 81: b k f f 
 82: b d d d 
 83: b d d h 
 84: b d d f 
 85: b d h h 
 86: b d h f 
 87: b d f f 
 88: b h h h 
 89: b h h f 
 90: b h f f 
 91: b f f f 
 92: k k k k 
 93: k k k d 
 94: k k k h 
 95: k k k f 
 96: k k d d 
 97: k k d h 
 98: k k d f 
 99: k k h h 
100: k k h f 
101: k k f f 
102: k d d d 
103: k d d h 
104: k d d f 
105: k d h h 
106: k d h f 
107: k d f f 
108: k h h h 
109: k h h f 
110: k h f f 
111: k f f f 
112: d d d d 
113: d d d h 
114: d d d f 
115: d d h h 
116: d d h f 
117: d d f f 
118: d h h h 
119: d h h f 
120: d h f f 
121: d f f f 
122: h h h h 
123: h h h f 
124: h h f f 
125: h f f f 
126: f f f f