Contoh artikel ini menjelaskan Java untuk mencapai permainan labirin pencarian kata. Bagikan untuk semua orang untuk referensi Anda. Analisis spesifiknya adalah sebagai berikut:
Di majalah, kita sering dapat melihat mini -games mencari kata -kata. Komputer ini sangat nyaman untuk memprosesnya, tetapi kualitas algoritma ini penting, karena jika diimplementasikan dengan algoritma brute force, waktu yang dibutuhkan tidak dapat dibayangkan.
Ini adalah realisasi struktur data dan masalah menyelesaikan realisasi realisasi deskripsi bahasa Java.
Kode lengkapnya adalah sebagai berikut, komentarnya sangat jelas
Impor Java.iffredreader; ** * Labirin pencarian kata * * * */Kelas Publik Wordsearch {/** * Dalam konstruktor, membangun dua aliran input, aliran kata -kata input, dan aliran tabel input * * */public wordsearch () melempar ioException {tuzzleStrea m = OpenFile ("Enter Form File Path:"); } /*** @return cocok ada berapa banyak kata dalam pencocokan total* pencarian dari delapan arah di setiap posisi* rd untuk menunjukkan hasil tambahan, misalnya: rd = -1, menunjukkan bahwa baris atas* CD menunjukkan bahwa penambahan yang bertambah Misalnya pada kolom misalnya: cd = -1. Menunjukkan langkah ke kiri* jadi rd = 1, cd = 0 berarti selatan* rd = -1, cd = 0 berarti utara,* rd = -1, cd = 1, menunjukkan timur laut*/ int solvePuzzle () {int int pencocokan = 0; untuk (int r = 0; r <baris; r ++) untuk (int c = 0; c <kolom; c ++) untuk (int rd = -1; rd <= 1; rd ++ ) untuk (int cd = -1; cd <= 1; cd ++) if (rd! = 0 || cd! = 0) cocok+= solvedirection (r, c, rd, cd); *** Pada koordinat yang ditentukan, sesuai dengan pencarian arah yang diberikan, kembalikan jumlah kata untuk mencocokkan *@return jumlah kecocokan */ private int solvedirection (int baserow, int basecol, int rowdelta) {string charsequen ce = " "; int numMatches = 0; int SearchResult; CharSequence + = theBoard [BASEROW] [BASECOL]; untuk (int i = Baserow + Rowdelta, J = Basecol + Coldlta; i> = 0 && j> = 0 & & & J < Clumns; +rowdelta, j += coldelta) {charsequence += theBoard [i] [j]; -BORDER Dangerous, dan ketika kata pencocokan kata terakhir, mengembalikan indeks -1 * * / if (searchResult == the words.length); bahkan jika Anda terus mencari, apa yang Anda lakukan tidak berguna * * / if (! Thewords [ SearchResult] .Startswith (Charsequence) Break; if (words [SearchResult] .Equals (CharSequence)) {Nummatics ++; Basecol + "Column" + i + " + j);} return numMatches;} /*** Pertama jelaskan arrays.binarySearch (objek [], objek)* Gunakan algoritma pencarian biner untuk mencari array yang ditentukan untuk mendapatkan yang ditentukan obyek. Sebelum panggilan ini, * harus diurutkan berdasarkan array sesuai dengan urutan alami dari elemen array (melalui metode sortir (objek [] objek) di atas). * Jika tidak ada penyortiran array, hasilnya tidak jelas. Elemen yang tidak dapat dibandingkan satu sama lain (misalnya, string dan integer), *tidak dapat mengurutkan array sesuai dengan urutan alami elemen array, jadi hasilnya tidak jelas) *保证找到的是哪一个。 */ private int static prefixsearch (String [] a, string x) {int idx = arrays.binarySearch (a, x); Dapatkan Stream Input* / Private BufferedReader OpenFile (String Message) {String FileName = "" "" "" "" "" "" "" System.out.println (pesan + ":"); coba {filename = in.readline (); Filein == NULL); PuzzleStream.readline ()) == NULL) Lemparkan ioException baru ("Tidak ada baris dalam file puzzle"); = Null) {if (oneline.length () !! batang.err. Println ("Puzzle bukan persegi panjang; lewati baris"); else puzzlelines.add (satu);} baris = puzzlelines.size (); theboard = baru Char [baris] [kolom] ;; untuk (string theline: puzzlelines) theBoard [r ++] = theline.tocharray ();} / *** Baca daftar kata yang telah diurutkan berdasarkan kamus* / kata pembaca pribadi private () Melempar IoException {Daftar <String> Words = ArrayList baru <string> () ;; String Thisword; 0) {System.err.println ("Tidak diurutkan dalam urutan kamus, kali ini,"); words.size ()]; .ou T.Println ("IO error:"); [] The Words;Diharapkan bahwa artikel ini bermanfaat untuk desain program Java semua orang.