Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2014
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.87 KB | None | 0 0
  1. void rec(int mask) {
  2.     if (sz == (1 << n) * n)
  3.     {
  4.         cout << sz << endl;
  5.         for (int i = 0; i < sz; ++i) {
  6.             if (i) cout << " ";
  7.             cout << pos[i] + 1;
  8.         }
  9.         cout << endl;
  10.         exit(0);
  11.     }
  12.     for (int i = 0; i < n; ++i) {
  13.         if ((mask >> i) & 1) continue;
  14.         int new_mask = mask ^ (1 << i);
  15.         if (!used[new_mask][i]) {
  16.             used[new_mask][i] = 1;
  17.             pos[sz++] = i;
  18.             rec(new_mask);
  19.             used[new_mask][i] = 0;
  20.             --sz;
  21.         }
  22.     }
  23.     for (int i = 0; i < n; ++i) {
  24.         if (!((mask >> i) & 1)) continue;
  25.         int new_mask = mask ^ (1 << i);
  26.         if (!used[new_mask][i]) {
  27.             used[new_mask][i] = 1;
  28.             pos[sz++] = i;
  29.             rec(new_mask);
  30.             used[new_mask][i] = 0;
  31.             --sz;
  32.         }
  33.     }
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement