Advertisement
simeonvarbanov

Untitled

Nov 25th, 2012
378
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.28 KB | None | 0 0
  1. public class KnightTour {
  2.     private static int[][] board = new int[8][8];
  3.     private static int moveCounter = 0;
  4.  
  5.     public static boolean tour(int count, int col, int row) {
  6.         boolean result = false;
  7.         board[col][row] = moveCounter;
  8.         moveCounter++;
  9.  
  10.         if (count >= 63) {
  11.             System.out.println("Done!");
  12.             result = true;
  13.         }
  14.         // legal moves
  15.         else if (col - 2 >= 0 && row - 1 >= 0 && board[col - 2][row - 1] == -1
  16.                 && tour(count++, col - 2, row - 1)) {
  17.             result = true;
  18.         } else if (col - 2 >= 0 && row + 1 <= 7
  19.                 && board[col - 2][row + 1] == -1
  20.                 && tour(count++, col - 2, row + 1)) {
  21.             result = true;
  22.         } else if (col + 2 <= 7 && row + 1 <= 7
  23.                 && board[col + 2][row + 1] == -1
  24.                 && tour(count++, col + 2, row + 1)) {
  25.             result = true;
  26.         } else if (col + 2 <= 7 && row - 1 >= 0
  27.                 && board[col + 2][row - 1] == -1
  28.                 && tour(count++, col + 2, row - 1)) {
  29.             result = true;
  30.         } else if (col - 1 >= 0 && row + 2 <= 7
  31.                 && board[col - 1][row + 2] == -1
  32.                 && tour(count++, col - 1, row + 2)) {
  33.             result = true;
  34.         } else if (col + 1 <= 7 && row + 2 <= 7
  35.                 && board[col + 1][row + 2] == -1
  36.                 && tour(count++, col + 1, row + 2)) {
  37.             result = true;
  38.         } else if (col - 1 >= 0 && row - 2 >= 0
  39.                 && board[col - 1][row - 2] == -1
  40.                 && tour(count++, col - 1, row - 2)) {
  41.             result = true;
  42.         } else if (col + 1 <= 7 && row - 2 >= 0
  43.                 && board[col + 1][row - 2] == -1
  44.                 && tour(count++, col + 1, row - 2)) {
  45.             result = true;
  46.         }
  47.         return result;
  48.     }
  49.  
  50.     public static boolean reset(int board[][]) {// setting all the fields with-1
  51.         for (int i = 0; i < board[0].length; i++) {
  52.             for (int j = 0; j < board.length; j++) {
  53.                 board[i][j] = -1;
  54.             }
  55.         }
  56.         return true;
  57.     }
  58.  
  59.     public static void print(int array[][]) {
  60.         for (int row = 0; row < array[0].length; row++) {
  61.             for (int col = 0; col < array.length; col++) {
  62.                 System.out.print("|");
  63.                 System.out.printf("%02d", array[row][col]);
  64.             }
  65.             System.out.println("|");
  66.         }
  67.         System.out.println();
  68.     }
  69.  
  70.     public static void main(String[] args) {
  71.         System.out.println("Print just created boards.");
  72.         print(board);
  73.         System.out.println("Reset the boards.");
  74.         reset(board);
  75.         System.out.println("Print reseted board.");
  76.         print(board);
  77.         System.out.println("Start the moves.");
  78.         tour(0, 0, 0);
  79.         System.out.println("Print the board after moves.");
  80.         print(board);
  81.     }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement