This Java Program is to Implement Knight’s Tour Problem.A knight’s tour is a sequence of moves of a knight on a chessboard such that the knight visits every square exactly once. If the knight ends on a square that is one knight’s move from the beginning square (so that it could tour the board again immediately, following the same path), the tour is closed, otherwise it is open. The exact number of open tours on an 8×8 chessboard is still unknown.
Here is the source code of the Java Program to Implement Knight’s Tour Problem. The Java program is successfully compiled and run on a Linux system. The program output is also shown below.
package com.vipin.algorithms;
public class KnightTour
{
private static final int N = 8;
private int soln[][];
public KnightTour()
{
soln = new int[N][N];
}
private boolean isSafe(int x, int y)
{
if (x >= 0 && x < N && y >= 0 && y < N && soln[x][y] == -1)
return true;
return false;
}
private void printSolution()
{
for (int x = 0; x < N; x++)
{
for (int y = 0; y < N; y++)
{
System.out.print(" " + soln[x][y]);
}
System.out.println();
}
}
private boolean solveKTUtil(int x, int y, int movei, int xMove[],int yMove[])
{
int k, next_x, next_y;
if (movei == N * N)
return true;
for (k = 0; k < N; k++)
{
next_x = x + xMove[k];
next_y = y + yMove[k];
if (isSafe(next_x, next_y))
{
soln[next_x][next_y] = movei;
if (solveKTUtil(next_x, next_y, movei + 1, xMove, yMove))
return true;
else
soln[next_x][next_y] = -1;
}
}
return false;
}
public boolean solveKnightTour()
{
for (int x = 0; x < N; x++)
{
for (int y = 0; y < N; y++)
{
soln[x][y] = -1;
}
}
int xMove[] = { 2, 1, -1, -2, -2, -1, 1, 2 };
int yMove[] = { 1, 2, 2, 1, -1, -2, -2, -1 };
soln[0][0] = 0;
if (!solveKTUtil(0, 0, 1, xMove, yMove))
{
System.out.println("the solution does not exist");
return false;
}
else
{
printSolution();
}
return true;
}
public static void main(String... arg)
{
KnightTour knightTour = new KnightTour();
System.out.println("the solution is");
knightTour.solveKnightTour();
}
}
$javac KnightTour.java $java KnightTour the solution is 0 59 38 33 30 17 8 63 37 34 31 60 9 62 29 16 58 1 36 39 32 27 18 7 35 48 41 26 61 10 15 28 42 57 2 49 40 23 6 19 47 50 45 54 25 20 11 14 56 43 52 3 22 13 24 5 51 46 55 44 53 4 21 12
Related posts:
The Spring @Controller and @RestController Annotations
Java – Reader to InputStream
Java Program to Find the Shortest Path from Source Vertex to All Other Vertices in Linear Time
SOAP Web service: Upload và Download file sử dụng MTOM trong JAX-WS
HttpClient 4 – Send Custom Cookie
Java Program to find the peak element of an array using Binary Search approach
Hướng dẫn Java Design Pattern – Builder
Kết hợp Java Reflection và Java Annotations
Apache Commons Collections OrderedMap
The DAO with Spring and Hibernate
Java Program to Implement a Binary Search Algorithm for a Specific Search Sequence
Java Program to implement Bi Directional Map
Documenting a Spring REST API Using OpenAPI 3.0
Guide to the Volatile Keyword in Java
Spring @Primary Annotation
Java Program to Implement Meldable Heap
Registration – Activate a New Account by Email
Hướng dẫn Java Design Pattern – Chain of Responsibility
HashSet trong Java hoạt động như thế nào?
Prevent Brute Force Authentication Attempts with Spring Security
Java Program to implement Priority Queue
A Guide to the ViewResolver in Spring MVC
Java – Write to File
Java Program to Implement Hash Tables Chaining with List Heads
New Features in Java 10
Java – Delete a File
Rest Web service: Filter và Interceptor với Jersey 2.x (P2)
Assertions in JUnit 4 and JUnit 5
Semaphore trong Java
Jackson – Marshall String to JsonNode
Introduction to PCollections
Java List UnsupportedOperationException