В примере этой статьи описывается Java для достижения поисковых лабиринта Word. Поделитесь этим для всех для вашей ссылки. Конкретный анализ заключается в следующем:
В журналах мы часто можем видеть мини -дамы, которые ищут слова. Этот компьютер очень удобен для его обработки, но качество алгоритма важно, потому что, если он реализован с алгоритмом грубой силы, время, которое он берет, невообразимо.
Это реализация структуры и задач данных решает реализацию реализации описания языка Java.
Полный код заключается в следующем, комментарий очень ясен
Import Java.io.buffredread; ** * Поиск слов Maze * * * * */Public Class Wordsearch {/** * В конструкторе, создайте два потока ввода, входные потоки слов и входные потоки таблиц * * */public wordsearch () бросают ioException {puzzLestrea m = openfile («Введите форму файла:»); } /*** @return совпадает, сколько слов в полном сопоставлении* Поиск из восьми направлений в каждой позиции* rd, чтобы указать инкрементный выход, например: rd = -1, указывая, что верхняя линия* CD указывает, что увеличение Например, в столбце, например: CD = -1. Указывает шаг влево* so rd = 1, cd = 0 означает юг* rd = -1, cd = 0 означает север,* rd = -1, cd = 1, что указывает на северо -восток*/ public int solvepuzzzle () {int Соответствует = 0; ) для (int cd = -1; cd <= 1; cd ++) if (rd! = 0 || cd! = 0) Соответствует+= решает (r, c, rd, cd); *** В указанных координатах, в соответствии с поиском данного направления, верните количество слов, чтобы соответствовать *@return Количество совпадений */ private int regvedirection (int baserow, int basecol, int rowdelta) {String chareSecuredE = " "; int nummatches = 0; int searchResult; chareSequence + = theboard [baserow] [basecol]; for (int i = baserow + rowdelta, j = basecol + coldlta; i> = 0 && j> = 0 & & & j < Clumns; -Потвод опасно, и когда последнее префикс сопоставления слова возвращает индекс -1 * * / if (searchresult == thewords.length); SearchResult] .StartSwith (char -Sevence) Break; BaseCol + "Column" + i + " + j);} return nummatches;} /*** Сначала объясните Arrays.binarysearch (Object [], Object)* Используйте алгоритм двоичного поиска для поиска указанного массива, чтобы получить указанный объект. Перед этим вызовом * должно быть отсортировано по массиву в соответствии с естественным порядком элементов массива (с помощью вышеупомянутого метода [Object []). * Если нет сортировки массива, результат неясен. Элементы, которые не могут сравнить друг с другом (например, строка и целое число), *не может сортировать массив в соответствии с естественным порядком элементов массива, поэтому результат не ясен) *保证找到的是哪一个。 */ Private Static Int PrefixSearch (String [] a, string x) {int idx = arrays.binarysearch (a, x); Получить входной поток* / private BufferedReader OpenFile (String Message) {string fileName = "" "" "" "" "" "" "" System.out.println (Message + ":"); Try {filename = in.ReadLine (); filein == null); Buzzlestream.readline ()) = null). = Null) {if (oneline.length () !! Stem.err. Println ("головоломка не является прямоугольной; пропусков"); else puzzlelines.add (one);} rows = puzzlelines.size (); theboard = new Char [Rows] [Columns] ;; for (String theline: puzzlelines) Theboard [r ++] = thelin () Бросает ioException {list <string> words = new ArrayList <string> () ;; 0) {System.err.println ("Не отсортировано в порядке словаря, на этот раз"); words.size ()]; .ou T.Println («IO ошибка:»); [] СВОТИ;Есть надежда, что эта статья полезна для дизайна программы Java каждого.