#342
Soarece
Se dă o tablă dreptunghiulară formată din n
linii și m
coloane, definind n*m
zone, unele dintre ele fiind libere, altele conținând obstacole. În zona aflată la poziția is
, js
se află un șoarece care se poate deplasa pe tablă trecând din zona curentă în zona învecinată cu aceasta pe linie sau pe coloană. Scopul sau este să ajungă la o bucată de brânză aflată în zona de la poziția ib
, jb
, fără a părăsi tabla, fără a trece prin zone care conțin obstacole și fără a trece de două ori prin aceeași zonă.
Determinați câte modalități prin care șoarecele poate ajunge de la poziția inițială la cea a bucății de brânză există.
Problema | Soarece | Operații I/O |
soarece.in /soarece.out
|
---|---|---|---|
Limita timp | 1 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
Id soluție | #8840238 | Utilizator | |
Fișier | soarece.cpp | Dimensiune | 758 B |
Data încărcării | 14 Martie 2018, 20:15 | Scor / rezultat | Eroare de compilare |
soarece.cpp: In function 'void afis()': soarece.cpp:9:66: error: expected '}' at end of input const int di[]={0,0,1,-1}, dj[]={1,-1,0,0}; void afis(){ nrsol++;; //for(int i=1;i<=n;++i){ // for(int j=1;j<=m;++j) // cout << setw(3) << a[i][j]; // cout << endl; //} //cout << endl; } void back(int i,int j, int pas) { if(i>0 && i<=n && j>0 && j<=m && a[i][j]==0) { a[i][j] = pas; if(i==ib && j==jb) afis(); else for(int k=0;k<4;++k) back(i+di[k], j+dj[k], pas+1); a[i][j] = 0; } } int main() { fin >> n >> m; for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) fin >> a[i][j], a[i][j] = -a[i][j]; fin >> is >> js >> ib >> jb; back(is, js, 1); fout << nrsol; return 0; } ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Soarece 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ă.