java- hladanie slova

Sekcia: Programovanie 10.05.2010 | 15:58
Avatar Tomas Hreben OpenSuse 12.1 , win 7  Používateľ
Chcel by som vas poprosit o pomoc, ako najst slovo v matici. Chcel by som to vsetkimi smermi. Nevedeli by ste mi poradit ako by mohol vyzerat algoritmus?
    • Re: java- hladanie slova 10.05.2010 | 16:15
      Avatar omdzor #!  Používateľ
      A ta matica je akoze dvojrozmerne pole String-ov? Inak si to neviem predstavit, ak je to tak, tak algoritmus je klasicky dvojity vnoreny cyklus a checkujes, ci prvok matice je tvoje hladane slovo...
      #! /usr/bin/env python
      • Re: java- hladanie slova 10.05.2010 | 17:27
        Avatar fraxinus Debian 5.0  Používateľ
        Myslim ze sa snazi vyriesit osemsmerovku
        I am not here. Isn't here just there without a t?
        • Re: java- hladanie slova 10.05.2010 | 17:52
          Avatar omdzor #!  Používateľ
          Tak toto ma vobec nenapadlo=) Takto je to aj o dost viac zaujimave...
          #! /usr/bin/env python
          • Re: java- hladanie slova 10.05.2010 | 18:17
            Avatar Tomas Hreben OpenSuse 12.1 , win 7  Používateľ
            prepac te, Ta matica je vlastne osemsmerovka. Mam to uz spravene nacitavanie, len neviem ako spravit hladanie...:( nieco ma napadlo ale vsetko bolo len na riadky a na stlpce ale ako spravit aj diagonaly.
            • Re: java- hladanie slova 10.05.2010 | 18:59
              Avatar omdzor #!  Používateľ
              Takze, musis si hlavne uvadomit, ze diagonala v 2-rozm. matici <i,j> ma vlastnost:
              [ak sa jedna o diagonalu zlava hora doprava dole] jednotlive indexy prvkov diagonaly sa zvysuju o jedna (dlha diagonala je 00->11->22 atd)
              [ak sa jedna o diagonalu sprava hora dolava dole] prvy index sa zvysuje a druhy znizuje (dlha diagonala je napr. v pripade rozmeru matice 3 02->11->20)

              ukazem, ako si vies vytvorit vsetky zlava hora doprava dole diagonaly za predpokladu, ze pocet stlpcov je n (reprezentovane indexom j) a pocet riadkov je m (index i):
              for (int i=0; i<=m-1; i++){
                  for (int j=0; j<=n-1; j++){
                      // samotne vytvaranie diagonaly
                      String diagonal = "";
                      for (int k=0; i+k<=m-1 || i+j<=n-1; k++){  // pripocitava k i a j jednotku az kym i alebo j nedosiahnu maximum
                          diagonal += matica[i+k][j+k];
                      }
                      checkDiagonal(diagonal); /* v diagonal mas po prvom prebehnuti cyklu "k" najdlhsiu diagonalu a tu vykonas kontrolu, ci to nie je urcene slovo*/
                  }
              }
              

              druhy pripad nie je sice rovnaky ale analogicky nan urcite prides.-)
              #! /usr/bin/env python
              • Re: java- hladanie slova 31.05.2010 | 23:31
                Avatar Tomas Hreben OpenSuse 12.1 , win 7  Používateľ
                chcem sa spitat checkDiagonala(diagonal) to je metoda v java alebo je to nejaka funkcia?
                • Re: java- hladanie slova 01.06.2010 | 02:02
                  Avatar omdzor #!  Používateľ
                  Je to pseudo funkcia, teda musis si ju doprogramovat. Myslel som to tak, ze v tej funkcii si overis, ci ta diagonala obsahuje slovo, ktore hladas. Obsahovala by nieco ako:
                  for (String slovo:slova){
                    if (diagonal.contains(slovo)){
                      /* tu nieco urobis, ak si nasiel slovo, napriklad si zistis ake su indexy toho slova a
                         zafarbis ho v tej matici... */
                  }
                  
                  kde slova je nejake pole hladanych slov.
                  #! /usr/bin/env python