#864
Roboti
Se dă o matrice cu n
linii și m
coloane și elemente 0
sau 1
, reprezentând planul unui teren în care 0
reprezintă o zonă accesibilă, iar 1
reprezintă o zonă inaccesibilă. O zonă a terenului are ca și coordonate linia și coloana corespunzătoare din matrice. Într-o zonă cunoscută a matricei se află un robot, iar în altă zonă, e asemenea cunoscută, se află o roboțică. Determinați numărul minim de pași prin care robotul va ajunge la roboțică. Dacă nu este posibil ca robotul să ajungă la roboțică, rezultatul va fi -1
.
Problema | Roboti | Operații I/O |
roboti.in /roboti.out
|
---|---|---|---|
Limita timp | 0.5 secunde | Limita memorie |
Total: 32 MB
/
Stivă 8 MB
|
Id soluție | #24127329 | Utilizator | |
Fișier | roboti.cpp | Dimensiune | 1.30 KB |
Data încărcării | 28 Septembrie 2020, 12:24 | Scor / rezultat | Eroare de compilare |
roboti.cpp: In function 'void stergeQ(nod*&, nod*&)': roboti.cpp:2:375: error: expected '}' at end of input using namespace std; ifstream cin("roboti.in"); ofstream cout("roboti.out"); struct nod { int x, y; nod *urm; } *p, *u; void adaugaQ(nod *&p, nod *&u, int x, int y) { nod *a = new nod; a->x = x; a->y = y; a->urm = NULL; if(p == NULL) { p = u = a; } else { u -> urm = a; u = a; } } void stergeQ(nod *&p, nod *&u) { if(p != NULL) { if(p == u) { delete p; p = u = NULL; } else { /// avem cel putin 2 elemente nod *aux = p; p = p -> urm; delete aux; } } } void afisQ(nod *p, nod *u) { for(nod *i = p; i != NULL; i = i -> urm) { cout << i->x << ' ' << i->y << '\n'; } cout << '\n'; } const int MAX = 1003, ZID = -1, LIBER = 0; int dx[] = {0, 1, 0, -1}; int dy[] = {1, 0, -1, 0}; int a[MAX][MAX], n, m, sx, sy, fx, fy; void lee() { adaugaQ(p, u, sx, sy); a[sx][sy] = 1; while(p != NULL) { int x = p -> x; int y = p -> y; stergeQ(p, u); for(int d = 0; d < 4; ++d) { int nx = x + dx[d]; int ny = y + dy[d]; if(a[nx][ny] == LIBER) { a[nx][ny] = 1 + a[x][y]; adaugaQ(p, u, nx, ny); } } } } int main() { cin >> n >> m; for(int i = 1; i <= n; ++i) { for(int j = 1; j <= m; ++j) { cin >> a[i][j]; if(a[i][j] == 1) { a[i][j] = ZID; } } } cin >> sx >> sy >> fx >> fy; for(int i = 0; i <= m + 1; ++i) { a[0][i] = a[n + 1][i] = ZID; } for(int i = 0; i <= n + 1; ++i) { a[i][0] = a[i][m + 1] = ZID; } lee(); cout << a[fx][fy] - 1; } ^ roboti.cpp:2:375: error: expected '}' at end of input roboti.cpp:2:375: error: expected '}' at end of input
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Roboti face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.