Titlul: Robot Scris de: FMI Razvan Birisan din Februarie 27, 2013, 17:19:56 Problemă: http://img24.imageshack.us/img24/2057/scan0002om.jpg (http://img24.imageshack.us/img24/2057/scan0002om.jpg)
Am rezolvat problema,dar nu cred că soluția mea este optimă. Folosesc o coadă.În fiecare nod al cozii memorez: linia și coloana pe care mă poziționez,indicele elementului din prima linie de pe care a plecat robotul,energia pe care o are robotul acum. Dacă am ajuns pe linia n și robotul mai are energie atunci consider valid indicele de unde a plecat robotul. La final, dacă am indici valizi îi scriu în fișier,altfel tipăresc -1. Cod: # include <fstream> Voi cum ați rezolva această problemă ? :) Titlul: Răspuns: Robot Scris de: fdproxy din Februarie 28, 2013, 01:02:35 - Cerinta nu pomeneste nimica de optimal (si cred ca nu aveti cunostinele necesare).
- Nu am inteles la ce foloseste "coada" (si nici de ce ii zici "coada"). - Ce faci daca drumul pe care esti consuma toata energia dar exista altul bun (cu acelasi punct de pornire)? - Foloseste comentarii. - bool p[dim] = {false}; initializeaza primul element, nu tot vectorul. Asta a fost intentia? - main fara int in fata violeaza standardul curent. Titlul: Răspuns: Robot Scris de: FMI Razvan Birisan din Februarie 28, 2013, 08:31:37 -Cunoştinţe necesare pentru ce ? Eu înţeleg prin soluţie optimă: o soluţie care consumă cât mai puţină memorie şi are un timp de execuţie cât mai mic.
-Ştiu că o coadă este o structură de date,un caz particular de listă care funcţionează pe principiul FIFO (first in – first out, primul intrat este primul servit).E ceva greşit dacă îi zic "coadă" ? Îi spun aşa de când am învăţat algoritmul lui Lee ( implementat cu o coadă ).Cred că ce am făcut mai sus seamănă cu algoritmul lui Lee,deşi am o mică suspiciune în ceea ce îl priveşte pe v[ i ].e. -Merg pe toate drumurile posibile. -Pe viitor o să folosesc comentarii. -bool p[dim] = {false}; ştiu că variabilele globale sunt iniţializate cu 0.Voiam să mă asigur că fiecare element al vectorului are valoare "false".Acum văd că am făcut o greşeală gravă. -main nu credeam că e o greşeală gravă.Deşi acolo am un warning.O să foloseasc int main(). Problema asta am primit-o la olimpiadă şi mă întrebam dacă nu cumva m-am complicat prea mult.Nu am altă idee de rezolvare,dar presupun că există o soluţie mai simplă,care să consume mai puţină memorie şi să aibă un timp de execuţie mai bun. Titlul: Răspuns: Răspuns: Robot Scris de: fdproxy din Martie 01, 2013, 00:04:38 Felicitari pentru participarea la olimpiada.
- [...puÅ£ină memorie ÅŸi are un timp de execuÅ£ie cât mai mic.] Inainte de orice, trebuie sa te preocupe corectitudinea rezultatului. - [...E ceva greÅŸit dacă îi zic "coadă" ?] Nu; e foarte bine, doar ca nu am vazut-o. Nu-mi aduc aminte de algoritm; au trecut ceva ani de cand am terminat scoala. - [Pe viitor o să folosesc comentarii.] Comentariile te ajuta. - [...am făcut o greÅŸeală gravă.] N-as zice. - [...nu credeam că e o greÅŸeală gravă] N-ai putea compila codul pe compilatoare mai noi. - M-am uitat inca o data la programel si nu am inteles ce urmaresti, asa ca l-am compilat. Pentru setul de mai jos am obtinut: 1 2 3 4. Este corect? 100 4 4 10 80 60 90 100 100 100 50 200 100 100 60 300 500 200 100 Titlul: Răspuns: Robot Scris de: FMI Razvan Birisan din Martie 01, 2013, 08:35:36 Citat -[...puÅ£ină memorie ÅŸi are un timp de execuÅ£ie cât mai mic.] Inainte de orice, trebuie sa te preocupe corectitudinea rezultatului. De acord. :)Citat - M-am uitat inca o data la programel si nu am inteles ce urmaresti, asa ca l-am compilat. Pentru setul de mai jos am obtinut: 1 2 3 4. Este corect? Este corect. 8)100 4 4 10 80 60 90 100 100 100 50 200 100 100 60 300 500 200 Pe mine mă îngrijorează testele mari,sunt greu de verificat cu creionul pe hârtie È™i mi-e frică să nu depășească numărul de elemente al cozii. Fiecare pas posibil al robotului este memorat în coadă È™i pe mine mă interesează dacă la pasul pe linia n mai are energie( > 0 ). :thumbup: Titlul: Răspuns: Robot Scris de: fdproxy din Martie 01, 2013, 13:05:40 In cazul asta, felicitari. Implementarea pare a fi foarte simpla. Ce faci acolo semana cu “breadth-frist searchâ€. O sa revad enuntul, daca gasesc timp.
Cel mai simplu ar fi sa intrerupi executia, daca depasesti limitele, si sa afisezi un mesaj de eroare; sau poti folosi coada standard <queue> (mai lenta). ... Am gasit ceva timp si am implementat cum m-am priceput. Nu am participat la vreun concurs, asa ca nu prea stiu care sunt cerintele. Se pare ca este incurajata folosirea variabilelor globale si a numelor criptice. Copiaza codul pe calculatorul tau si vezi ce iese. Cod: #include <time.h> Titlul: Răspuns: Robot Scris de: FMI Razvan Birisan din Martie 04, 2013, 21:54:52 O implementare destul de interesantă.O să mă mai uit pe ea,acum doar am aruncat un ochi.
PS: Mersi pentru ajutorul la erorile de sintaxă. |