Advertisement
HabKaffee

Untitled

May 12th, 2021
540
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. void CombinationsByGreyCode(int n, int t) {
  2.     std::vector<int> c;
  3.     c.push_back(0);
  4.     for (size_t i = 1; i <= t; ++i) {
  5.         c.push_back(i-1);
  6.     }
  7.     c.push_back(n);
  8.     int j = 0;
  9.     while (true) {
  10.         r2:
  11.         for (size_t i = t; i >= 1; --i) {
  12.             std::cout << c[i] << " ";
  13.         }
  14.         std::cout << std::endl;
  15.         if (t % 2) {
  16.             if ((c[1] + 1) < c[2]) {
  17.                 ++c[1];
  18.                 goto r2;
  19.             } else {
  20.                 j = 2;
  21.                 goto r4;
  22.             }
  23.         } else {
  24.             if (c[1] > 0) {
  25.                 --c[1];
  26.                 goto r2;
  27.             } else {
  28.                 j = 2;
  29.                 goto r5;
  30.             }
  31.         }
  32.         r4:
  33.         if (c[j] >= j) {
  34.             c[j] = c[j-1];
  35.             c[j-1] = j-2;
  36.             goto r2;
  37.         } else {
  38.             ++j;
  39.         }
  40.         r5:
  41.         if ((c[j] + 1) < c[j+1]) {
  42.             c[j-1] = c[j];
  43.             ++c[j];
  44.             goto r2;
  45.         }
  46.         ++j;
  47.         if (j <= t) {
  48.             goto r4;
  49.         }
  50.         else {
  51.             break;
  52.         }
  53.     }
  54. }
Advertisement
RAW Paste Data Copied
Advertisement