TizzyT

KnightsTourBruteForce

Aug 4th, 2014
340
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.81 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void KnightsTourRecursion(int, int, int);
  6. bool board[12][12];
  7. int found = 0;
  8.  
  9. int main()
  10. {
  11.     for(int i = 0;i<12;i++)
  12.     {
  13.         for(int x = 0;x<12;x++)
  14.         {
  15.             board[i][x] = false;
  16.         }
  17.     }
  18.     for(int i = 2;i<10;i++)
  19.     {
  20.         for(int x = 2;x<10;x++)
  21.         {
  22.             board[i][x] = true;
  23.         }
  24.     }
  25.     KnightsTourRecursion(2,2,1);
  26.     return 0;
  27. }
  28.  
  29. void KnightsTourRecursion(int X, int Y, int level)
  30. {
  31.     if(board[X][Y] == true)
  32.     {
  33.         board[X][Y] = false;
  34.         if(level == 64)
  35.         {
  36.             found++;
  37.             board[X][Y] = true;
  38.             cout << found << endl;
  39.             char hold = cin();
  40.             return;
  41.         }
  42.         int newlevel = level + 1;
  43.         for(int i = 0;i<8;i++)
  44.         {
  45.             cout << level << endl;
  46.             switch(i)
  47.             {
  48.             case 0:
  49.                 KnightsTourRecursion(X - 2, Y - 1, newlevel);
  50.                 break;
  51.             case 1:
  52.                 KnightsTourRecursion(X - 2, Y + 1, newlevel);
  53.                 break;
  54.             case 2:
  55.                 KnightsTourRecursion(X - 1, Y + 2, newlevel);
  56.                 break;
  57.             case 3:
  58.                 KnightsTourRecursion(X + 1, Y + 2, newlevel);
  59.                 break;
  60.             case 4:
  61.                 KnightsTourRecursion(X + 2, Y + 1, newlevel);
  62.                 break;
  63.             case 5:
  64.                 KnightsTourRecursion(X + 2, Y - 1, newlevel);
  65.                 break;
  66.             case 6:
  67.                 KnightsTourRecursion(X + 1, Y - 2, newlevel);
  68.                 break;
  69.             case 7:
  70.                 KnightsTourRecursion(X - 1, Y - 2, newlevel);
  71.                 break;
  72.             }
  73.         }
  74.         board[X][Y] = true;
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment