Jeden príklad v C++

C,C++,C#

Moderátori: psichac, Moderátori

Osiris
Okoloidúci
Okoloidúci
Príspevky: 34
Dátum registrácie: 23 Sep 2011, 16:34
Bydlisko: LC

Jeden príklad v C++

Príspevok od používateľa Osiris » 19 Mar 2012, 15:17

Zdravím, vedel by mi niekto pomôcť so zadaním, ktoré je na obrázku v prílohe?
-veľmi by mi to pomohlo.
-Ďakujem.
Prílohy
img034.jpg
0

Používateľov profilový obrázok
vama
Ultimate člen
Ultimate člen
Príspevky: 1545
Dátum registrácie: 26 Aug 2008, 00:00
Bydlisko: BA
Vek: 31

Re: Jeden príklad v C++

Príspevok od používateľa vama » 19 Mar 2012, 15:56

Mna napada, jedna premenna v nej sa bude uchovavat vektor smeru a dalsia v nej sa bude uchovavat pozicia. Stale bude inkrementovat polohu kym nenarazi na 1, potom zmeni smer a takto dookola ide.
Ale uŕcite sa najde aj lepsie riesenie :wink:
0
"Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek

Používateľov profilový obrázok
awen
Power user
Power user
Príspevky: 609
Dátum registrácie: 11 Feb 2009, 00:00
Bydlisko: Bratislava
Vek: 36

Re: Jeden príklad v C++

Príspevok od používateľa awen » 19 Mar 2012, 16:16

priamociare riesenie je pouzit rekurziu a pomocne pole, v ktorom si poznacis, na ktorych poliach si uz bol.
pre pole 5x5 by to bolo nejak takto:

Kód: Vybrať všetko

char mapa[5][5];
bool pom[5][5];

void rekurzia(int r, int s)
{
  pom[r][s] = true;  // poznacim si ze tu uz som bol

  if (mapa[r][s] == 'C')
  {
    // hura sme v cieli
    // a nejak to ukoncime :)
  }

  // pohy hore
  if (r > 0 && mapa[r - 1][s] != '1' && !pom[r - 1][s]) rekurzia(r - 1, s);
  // pohyb dole
  if (r < 4 && mapa[r + 1][s] != '1' && !pom[r + 1][s]) rekurzia(r + 1, s);
  // pohyb vlavo

  // pohyb vpravo


}

int main()
{
  // nacitanie mapy do 'mapa'
  // atd...

  // vynulovanie pomocneho pola
  for (int i = 0; i < 5; i++) for (int j = 0; j < 5; j++) pom[i][j] = false;

  // zaciname rekurziu na zaciatku
  rekurzia(0, 0);
  
}
mohol by si z toho pochopit ako som to myslel :) na zaciatok by ti to mohlo stacit.. neskor zistis ze pre velke polia to nejak nefunguje :)
0

Napísať odpoveď