O exemplo deste artigo descreve o Java para alcançar jogos de busca de palavras. Compartilhe para todos para sua referência. A análise específica é a seguinte:
Nas revistas, muitas vezes podemos ver mini -games procurando palavras. Este computador é muito conveniente para processá -lo, mas a qualidade do algoritmo é importante, porque se for implementado com um algoritmo de força bruta, o tempo que leva é inimaginável.
Essa é a realização da estrutura e problemas de dados, resolva a realização da realização da descrição do idioma Java.
O código completo é o seguinte, o comentário é muito claro
Importar Java.io.BuffReader; ** * Pesquisa de palavras Maze * * * */public class WordsEarch {/** * No construtor, construa dois fluxos de entrada, fluxos de entrada de palavras e fluxos de entrada de tabelas * * */public wordsEarch () lança ioexception {pupzzlestrerea m = OpenFile ("Digite o caminho do arquivo:"); } /*** @return corresponde Há quantas palavras na correspondência total* Pesquisar de oito direções em cada posição* rd para indicar o rendimento incremental, por exemplo: rd = -1, indicando que a linha superior* indica que o incremento Por exemplo, na coluna, por exemplo: CD = -1. Indica uma etapa para a esquerda* então rd = 1, cd = 0 significa sul* rd = -1, cd = 0 significa norte,* rd = -1, cd = 1, indicando nordeste*/ public int solvePuzzle () {int Matches = 0; ) para (int cd = -1; cd <= 1; cd ++) se (rd! *** Sobre as coordenadas especificadas, de acordo com a busca de uma determinada direção, retorne o número de palavras para corresponder *@return Número de fósforos */ private int resolvedirection (int baserow, int basecol, int rowdelta) {string charsequen ce = " "; int numMatches = 0; int pesquisaResult; CharSequence + = theBoard [baserow] [basecol]; para (int i = baserow + rowdelta, j = basecol + coldlta; i> = 0 && j> = 0 & & j < Clumns; -Border perigoso e quando a última palavra correspondente prefixo retorna o índice -1 * * / if (searchResult == thewords.length); SearchResult] .startswith (charsequence) quebra; Basecol + "Coluna" + I + " + J);} Retorne numMatches;} /*** Primeiro Explique Arrays.binarySearch (objeto [], objeto)* Use um algoritmo de pesquisa binária para pesquisar a matriz especificada para obter o especificado objeto. Antes desta chamada, * deve ser classificado pela matriz de acordo com a ordem natural dos elementos da matriz (através da classificação acima (método do objeto []). * Se não houver classificação da matriz, o resultado não é claro. Elementos que não podem ser comparado entre si (por exemplo, string e número inteiro), *não pode classificar a matriz de acordo com a ordem natural dos elementos da matriz, portanto o resultado não é claro) *保证找到的是哪一个。 */ private static int prefixsearch (String [] A, String x) {int idx = Arrays.binarySearch (a, x); Obtenha o fluxo de entrada* / Private BufferReader OpenFile (string message) {String filename = "" "" "" "" "" "" System.out.println (message + ":"); tente {filename = in.readline (); filein == null); PUZZLESTRAMENTO.ATRAMENTE () == NULL) LIGUE NOVA IOEXCEIRO ("sem linhas no arquivo de quebra -cabeça"); = Null) {if (oneline.length () !! stem.err. Println ("o quebra -cabeça não é retangular; pular a linha"); else PuzzleLelines.add (um);} linhas = PuzzLelines.size (); theboard = novo Char [linhas] [colunas] ;; () Lança ioexception {list <tring> words = new ArrayList <string> ();; 0) {System.err.println ("Não classificado na ordem do dicionário, desta vez"); words.size ()]; .UM T.Println (Erro de IO: "); [] TheWords;Espera -se que este artigo seja útil para o design do programa Java de todos.