L'exemple de cet article décrit Java pour réaliser des jeux de labyrinthe de recherche de mots. Partagez-le pour tout le monde pour votre référence. L'analyse spécifique est la suivante:
Dans les magazines, nous pouvons souvent voir des mini-jeux à la recherche de mots. Cet ordinateur est très pratique pour le traiter, mais la qualité de l'algorithme est importante, car si elle est implémentée avec un algorithme de force brute, le temps qu'il faut est inimaginable.
Il s'agit de la réalisation de la structure des données et des problèmes résolvent la réalisation de la réalisation de la description du langage Java.
Le code complet est le suivant, le commentaire est très clair
Importation java.io.buffredReader; ** * Word Search Maze * * * * / public class WordSearch {/ ** * Dans le constructeur, construisez deux flux d'entrée, des flux d'entrée de mots et des flux d'entrée de tables * * * / public wordsearch () lève ioException {Puzzlestrea M = OpenFile (Entrez le chemin du fichier: "); } / *** @return Matches Il y a le nombre de mots dans la correspondance totale * Recherche à partir de huit directions dans chaque position * RD pour indiquer le rendement incrémentiel, par exemple: RD = -1, indiquant que la ligne supérieure * CD indique que l'incrémentation Par exemple sur la colonne, par exemple: cd = -1. Indique une étape vers la gauche * donc rd = 1, cd = 0 signifie sud * rd = -1, cd = 0 signifie nord, * rd = -1, cd = 1, indiquant le nord-est * / public int solvepuzzle () {int correspond à 0; pour (int r = 0; r <lignes; r ++) pour (int c = 0; ) pour (int cd = -1; cd <= 1; cd ++) if (rd! = 0 || cd! = 0) correspond à + = solverection (r, c, rd, cd); *** Sur les coordonnées spécifiées, selon la recherche d'une direction donnée, renvoyez le nombre de mots à correspondre * @return Nombre de matchs * / private int solverection (int baserow, int basecol, int rowdelta) {String CharSeden ce = " "; int numMatches = 0; int searchResult; chardensation + = theboard [baserow] [BaseCol]; for (int i = baserow + rowdelta, j = BaseCol + Coldlta; i> = 0 && j> = 0 & & j << CLUMNS; -Borter dangereux, et lorsque le dernier mot correspondant à un mot, renvoie l'index -1 * * / if (searchResult == thewords.Length); SearchResult] .startswith (chardence) Break; BasECol + "Column" + i + "+ j);} return numMatches;} / *** Expliquez d'abord les arrays.binarysearch (objet [], objet) * Utilisez un algorithme de recherche binaire pour rechercher le tableau spécifié pour obtenir le tableau spécifié objet. Avant cet appel, * doit être trié par le tableau en fonction de l'ordre naturel des éléments du tableau (à travers le tri ci-dessus (méthode objet []). * S'il n'y a pas de tri du tableau, le résultat n'est pas clair. Éléments qui ne peuvent pas être comparé les uns aux autres (par exemple, String et Integer), * ne peut pas trier le tableau en fonction de l'ordre naturel des éléments du tableau, donc le résultat n'est pas clair) * 保证找到的是哪一个。 * / Private Static int PrefixSearch (String [] A, String x) {int idx = arrays.binarysearch (a, x); Obtenez le flux d'entrée * / privé bufferedReader openFile (message de chaîne) {string filename = "" "" "" "" "" "" "System.out.println (message +": "); try {filename = in.readline (); filein == null); Puzzlestream.readline ()) == Null) New ioException ("Pas de lignes dans le fichier de puzzle"); = Null) {if (online.length () !! stem.err. Println ("puzzle n'est pas rectangulaire; saut de ligne"); else puzzlelines.add (un);} rows = puzzlelines.size (); theboard = new Char [lignes] [colonnes] ;; () Lance ioException {list <string> words = new ArrayList <string> () ;; 0) {System.err.println ("Non trié dans l'ordre du dictionnaire, cette fois,"); words.size ()]; y (y (the words;} // vérifier le public principal void main (String [] art) {wordsearch p = null; try {p = new WordSearch ();} catch (ioException e) {System .ou t.println ("IO Erreur:"); E.PrintStackTrace (); [] THE MOTS;On espère que cet article est utile à la conception du programme Java de tous.