Guest User

Игра в палочки (нужен алгоритм). Брут

a guest
Sep 17th, 2011
612
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.20 KB | None | 0 0
  1. #include <cstdio>
  2. #include <iostream>
  3. #include <cmath>
  4. #include <algorithm>
  5. #include <bitset>
  6. #include <string>
  7.  
  8. using namespace std;
  9.  
  10.  
  11. const int MAXN = 25;
  12. const int MAXM = 1 << MAXN;
  13.  
  14. bool f[MAXM];
  15. int p[MAXM];
  16. int n;
  17.  
  18. int main()
  19. {
  20.     #ifndef ONLINE_JUDGE
  21.         freopen("in", "r", stdin);
  22.         freopen("out", "w", stdout);
  23.     #endif
  24.     f[0] = true;
  25.     scanf("%d", &n);
  26.     for (int i = 1; i < (1 << n); i++)
  27.     {
  28.         for (int j = 0; j < n; j++)
  29.             if ((i & (1 << j)) && !f[i ^ (1 << j)])
  30.             {
  31.                 f[i] = true;
  32.                 p[i] = i ^ (1 << j);
  33.                 break;
  34.             }
  35.  
  36.         for (int j = 0; j < n - 1; j++)
  37.             if ((i & (3 << j)) == (3 << j) && !f[i ^ (3 << j)])
  38.             {
  39.                 f[i] = true;
  40.                 p[i] = i ^ (3 << j);
  41.                 break;
  42.             }
  43.     }
  44.  
  45.  
  46.     for (int i = 1; i <= n; i++)
  47.     {
  48.  
  49.         printf("%d: %d ", i, f[(1 << i) - 1]);
  50.         if (f[(1 << i) - 1])
  51.         {
  52.             int x = p[(1 << i) - 1];
  53.             for (int j = 0; j < i; j++)
  54.                 printf("%c", x & (1 << j)? 'X' : '.');
  55.         }
  56.         printf("\n");
  57.     }
  58.  
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment