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.
Jeden príklad v C++
Moderátori: psichac, Moderátori
Re: Jeden príklad v C++
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
Ale uŕcite sa najde aj lepsie riesenie
0
"Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek
Re: Jeden príklad v C++
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:
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
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);
}
0