.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » labirint

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
.campion
labirint


Timp maxim de executie/test:
0.1 secunde
Memorie totala disponibila/stiva:
16 MB/1 MB

Sa consideram un labirint de forma dreptunghiulara, format din n*m camere dispuse sub forma unei matrice cu n linii si m coloane. Vom considera ca liniile sunt numerotate de la 1 la n, iar coloanele sunt numerotate de la 1 la m. Camerele labirintului au usi care se deschid intr-o singura directie, permitand deplasarea in una dintre cele 8 camere invecinate. Pentru a codifica iesirile din camere, in fiecare element al matricei ce codifica labirintul va fi memorat un numar natural din intervalul [0, 255]. Fiecare bit 1 din reprezentarea binara a unui element din matrice corespunde unei usi in una dintre directiile posibile de miscare, în urmatoarea ordine: N, NE, E, SE, S, SV, V, NV. Mai exact daca bitul are valoarea 1 exista usa in directia corespunzatoare bitului, iar daca bitul are valoarea 0 usa corespunzatoare nu exista. Bitii sunt numerotati începând cu cel mai putin semnificativ.
In labirint se afla un soarece in camera de pe linia L0 si coloana C0. Soarecele ar vrea sa iasa din labirint, dar numai dupa ce a trecut printr-un anumit numar de camere (nmin). Imediat ce a trecut prin cele nmin camere soarecele poate parasi labirintul. Soarecele este istet si nu va trece de doua ori prin aceeasi camera. Soarecele poate iesi din labirint doar daca el se afla într-o camera care are usa într-o directie care îl conduce în afara labirintului.

Cerinta

Scrieti un program care sa determine un traseu al soarecelui care sa aiba cel putin lungimea nmin si care sa nu treaca de doua ori prin aceeasi camera. Traseul va incepe din camera initiala a soarecelui si se va termina intr-o camera care are usa spre iesirea din labirint.

Date de intrare

Fisierul de intrare labirint.in contine pe prima linie doua numere naturale separate printr-un spatiu n si m cu semnificatia din enunt. Pe fiecare dintre urmatoarele n linii se afla cate m numere naturale separate prin spatii, reprezentand codificarea labirintului. Pe urmatoarea linie a fisierului de intrare se afla doua numere naturale separate printr-un spatiu L0 si C0, reprezentand linia si coloana corespunzatoare camerei in care se afla initial soarecele. Ultima linie a fisierului de intrare contine numarul minim de camere prin care trebuie sa treaca soarecele soarecele înainte de a parasi labirintul.

Date de iesire

Fisierul de iesire labirint.out va contine pe prima linie un numar natural Lg, reprezentand numarul de camere pe care le poate vizita soarecele pana la iesire, fara a trece de mai multe ori prin aceeasi camera si trecand prin cel putin nmin camere. Pe urmatoarele Lg linii se afla cate doua numere naturale separate printr-un spatiu L C, reprezentand coordonatele camerelor (linie, coloana) prin care trece soarecele pe traseul determinat.

Restrictii

  • 0 < n, m <= 50
  • Pentru datele de test problema are intotdeauna solutie.

Exemple

labirint.in labirint.out Explicatii

5 6
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24
25 26 27 28 29 30
3 4

3

5
3 4
4 4
3 5
2 5
1 5
Traseul strabatut de soarece este:
(3,4)- 16 (00010000) - deci se poate deplasa spre S
(4,4)- 22 (00010110) - se poate deplasa spre NE, E, S (alege NE)
(3,5)- 17 (00010001) - se poate deplasa spre N, S (a parcurs 3 camere dar de aici nu se poate iesi - alege N)
(2,5)- 11 (00001011) - se poate deplasa spre N, NE, SE (nici de aici nu se poate iesi - alege N)
(1,5) - 5 (00000101) - se poate deplasa spre N, E (are iesire spre N)

prof. Marinel Serban
Liceul de Informatica "Grigore Moisil" Iasi
Contact:marinel_serban@yahoo.com

propunător: Prof. Emanuela Cerchez
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la .campion 2005: cuc, prime, radio, text2, honest, police, comori, patrate3, fisc, ref, pcod, zmeu, loc, nr01, scor2, judete, strict, convert, bile3, cod2, depou, auto2, tree, cat, nr3, chimie2, compress, jobs, leaves, zid, politics, onu2, ploaia, grazing, pstring, cartonase2, exp, cartoane, sir3, program, scoici, playlist, sqr, cai1, farfurii, joc1, trafic, carte, set, barbie, firma1, vile, game, donald, ambigram, dans, albinuta, rlcs, stea, submatrix, cub1, ham, sponsori, young, jokes, pizza1, albine, lot, atac1, monede1, count, exam, herbert, sudoku, bio, metro
De acelaşi autor: premii, finala, fractii, trei, manevre, nrcuv, an, vopsea, opmat, tramvai, bipal, kpal, sarpe, replace, factori, barca, perechi, grupe, cod, reactii, factura, decript, trenuri, holo, cifre, firma, tribile, mesaj, tricouri, pajura, monede, programs, fry, repeat, red, pavaj, bacan, nrbinar, invest, cutie2, loc, depou, nr3, zid, felinare, sir3, sqr, carte, stea, count, evaluare, super, schimb, zaruri, vectori, spirala, desen1, rima, ceas1, romane, sms, bac, excursia, joc7, furnici, munte1, cezar, marcare, excursie1, culmi, sume1, schi, nr4, fractie, cod3, medii, tren3, top, sant1, imagine, ocr, perfect, pluton, reforma, alee, ceas2, paritate, borcane, aranjare, comoara1, culmi1, reactivi, submult, sablon1, sir8, sume2, dansatori, smith, tom, matriosca, asociativ, control1, calorii, immortal, concat, mat, cubinvers, mine, divizori, cheie, stelar, joct, minmax, cladire, adunscad, razboi, ore, oras1, sumprod, prisme, operatii1, lgdrum, unupatru, chibrituri, extraprime, prieten, rebus1, grindina, opmult, betisoare, antitero, clase, pagini, ornament, ordine, spioni1
Despre backtracking: acop, bipal, magic2, vagoane, friends, tricouri, festival, numar, pento, ro, jobs, onu2, sir3, cai1, dans, ham, sudoku, caramele, linie, puncte, castel, excursia, joc7, pattern, avere, paianjen, medii, monkey, scara1, numere8, banda1, spirala1, cofetar, gradina, placa, smin, jucarii, immortal, concat, cubinvers, codif, izvor, avioane, jb, prisme, triburi1, genab, dineu, antitero, ornament, virgule
surse trimise | ajutor