El ejemplo de este artículo describe a Java para lograr juegos de laberinto de búsqueda de palabras. Compártelo para todos para su referencia. El análisis específico es el siguiente:
En las revistas, a menudo podemos ver mini juegos en busca de palabras. Esta computadora es muy conveniente para procesarla, pero la calidad del algoritmo es importante, porque si se implementa con un algoritmo de fuerza bruta, el tiempo que toma es inimaginable.
Esta es la realización de la estructura de datos y los problemas resuelven la realización de la realización de la descripción del lenguaje Java.
El código completo es el siguiente, el comentario es muy claro
Importar java.io.buffredReader; ** * Mazón de búsqueda de palabras * * * * */public class Wordsearch {/** * En el constructor, construir dos secuencias de entrada, flujos de entrada de palabras y flujos de entrada de tablas * * */public Wordsearch () lanza ioexception {Puzzlestrea M = OpenFile (Ingrese la ruta del archivo: "); } /*** @return coincide Hay cuántas palabras en la coincidencia total* buscan en ocho direcciones en cada posición* rd para indicar el rendimiento incremental, por ejemplo: rd = -1, lo que indica que la línea superior* CD indica que el incremento Por ejemplo, en la columna, por ejemplo, CD = -1. Indica un paso hacia la izquierda* entonces rd = 1, cd = 0 significa sur* rd = -1, cd = 0 significa norte,* rd = -1, cd = 1, que indica noreste*/ public int solvePuzzle () {int coincidencias = 0; ) para (int cd = -1; cd <= 1; cd ++) if (rd! = 0 || cd! = 0) coincidencias+= resuelto (r, c, rd, cd); *** En las coordenadas especificadas, según la búsqueda de una dirección determinada, devuelva el número de palabras que coincidan * @@return de coincidencias */ private int resuelto (int baserow, int basecol, int rowdelta) {string charsen ce = " "; int numMatches = 0; int searchResult; charsequence + = theboard [baserow] [basecol]; para (int i = baserow + rowdelta, j = basecol + frilllta; i> = 0 && j> = 0 & & & j << Clumms; -Border peligroso, y cuando la última palabra coincide con el prefijo, devuelve el índice -1 * * / if (searchResult == thewords.length); SearchResult] .Startswith (CharSequence) Break; BASECOL + "columna" + i + " + j);} return numMmatches;} /*** Primero explique la matriz.binarySearch (objeto [], objeto)* Use un algoritmo de búsqueda binario para buscar la matriz especificada para obtener el especificado objeto. Antes de esta llamada, * debe ser ordenado mediante la matriz de acuerdo con el orden natural de los elementos de la matriz (a través del tipo anterior (objeto [] método). * Si no hay clasificación de la matriz, el resultado no está claro. Los elementos que no pueden Compararse entre sí (por ejemplo, cadena e entero), *no se puede ordenar la matriz de acuerdo con el orden natural de los elementos de la matriz, por lo que el resultado no está claro) *保证找到的是哪一个。 */ privado static int prefixSearch (Cadena [] a, cadena x) {int idx = arrays.binarySearch (a, x); Obtenga el flujo de entrada* / private BufferedReader OpenFile (string Message) {String filename = "" "" "" "" "" "" System.out.println (mensaje + ":"); try {filename = in.readline (); filein == null); PuzzLeStream.Readline ()) == NULL) Traiga nueva IoException ("No hay líneas en el archivo de rompecabezas"); = Null) {if (oneline.length () !! stem.err. Println ("el rompecabezas no es rectangular; saltar fila"); else PuzzLelines.add (one);} filas = PuzzLelines.size (); The Board = New New Char [filas] [columnas] ;; () Lanza IOException {list <String> Words = New ArrayList <String> () ;; 0) {System.err.println ("no ordenado en el orden del diccionario, esta vez,"); words.size ()]; y (y (thewords;} // verifique el público principal void main (string [] art) {Wordsearch p = null; try {p = new Wordsearch ();} Catch (IOException E) {System .ou t.println ("Error IO:"); [] TheWords Private BufferedReader PuzzLestream;Se espera que este artículo sea útil para el diseño del programa Java de todos.