•DITzoneC
|
|
« : August 14, 2007, 10:34:11 » |
|
Aici puteţi discuta despre problema Dir.
|
|
|
Memorat
|
|
|
|
•ionescu88
Strain
Karma: -18
Deconectat
Mesaje: 16
|
|
« Răspunde #1 : Octombrie 17, 2007, 20:48:56 » |
|
SAlut!!!!! am facut problema dir, in felul urmator: am parcurs sirul de la inceput si de fiecare data cand am dat de un folder il bag in stiva si cand dau de un fisier scot folderele care au mai ramas in stiva si le memorez intr-un vecotr rez.........caile imi dau toate corect numa ca am o problema la sortarea lexicografica ca nush cum se face...adica nu inteleg.....cine ma poate ajuta pls?
|
|
|
Memorat
|
|
|
|
•peanutz
|
|
« Răspunde #2 : Octombrie 17, 2007, 21:27:33 » |
|
Parca aveai ceva in genu FOLDER(basm, aa, poveste). Tre sa afisezi FOLDER(aa, basm, poveste). Poti face asta cu bubble sort... Daca lucrezi in C poti folosi strcmp pentru compararea a2-a siruri sau echivalentul din pascal(cauta pe google daca vrei detalii).. Cauta bubble sort(sau orice alta sortare).
|
|
|
Memorat
|
....staind....
|
|
|
•fireatmyself
|
|
« Răspunde #3 : Octombrie 17, 2007, 21:31:56 » |
|
poti sa faci urmatorul algoritm: pentru doua cuvinte cu indicii i si j (i < j) cauta o pozitie p pentru care, caracterele din cele doua siruri sunt diferite. daca litera din cuvantul i, de pe acea pozitie, e mai mare decat cea din cuvantul j, de pe acea pozitie, atunci interschiba cele doua cuvinte (i trece in locul lui j si j trece in locul lui i). for (i = 0; i < nrez; i++) for (j = i+1; j < nrez; j++) { min = MINIM(LungimeCale[i], LungimeCale[j]); for (k = 0; k < min; k++) if (Cale[i][k] > Cale[j][k]) //interschimb cele doua cai } pentru a evita o complexitate prea mare poti sa aplici urmatoarea optimizare: in loc sa interschimbi tot cuvantul, mai bine interschibi niste indici. construiest vectorul Indice[ i ] = al i-lea cuvant (dupa indice) din sortarea lexicografica. initial presupui ca Indice[ i ] = i (adica presupui caile sortate). codul de mai sus devine : for (i = 0; i < nrez; i++) for (j = i+1; j < nrez; j++) { min = MINIM(LungimeCale[ Indice[i] ], LungimeCale[ Indice[j] ]); for (k = 0; k < min; k++) if (Cale[ Indice[i] ][k] > Cale[ Indice[j] ][k]) aux = Indice[i], Indice[i] = Indice[j], Indice[j] = aux; } la sfarsit vei avea: Indice[0] - indicele primul cuvant in ordine lexicografica, Indice[1] - al doilea cuvant in ordine lexicografica, ...., Indice[N-1] al N-lea cuvant in ordine lexicografica.
|
|
« Ultima modificare: Octombrie 17, 2007, 21:37:14 de către Bogdan A. Stoica »
|
Memorat
|
Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
|
|
|
•ionescu88
Strain
Karma: -18
Deconectat
Mesaje: 16
|
|
« Răspunde #4 : Octombrie 18, 2007, 15:03:00 » |
|
Sa presupunem ca se da urmatorul sir FOLDER1(basme,FOLDER5(),FOLDER6(snoava),FOLDER2(),FOLDER3(FOLDER4(poveste,basm),basm))..dupa cum am sortat eu imi da: 5 FOLDER1\basme FOLDER1\FOLDER6\snoava FOLDER1\FOLDER3\FOLDER4\basm FOLDER1\FOLDER3\FOLDER4\poveste FOLDER1\FOLDER3\basm DAR REZULTATUL CORECT este : 5 FOLDER1\FOLDER3\FOLDER4\basm FOLDER1\FOLDER3\FOLDER4\poveste FOLDER1\FOLDER3\basm FOLDER1\FOLDER6\snoava FOLDER1\basme
Cine ma ajuta sa imi spuna cum pot repara greseala!!!!!
|
|
|
Memorat
|
|
|
|
•fireatmyself
|
|
« Răspunde #5 : Octombrie 18, 2007, 16:34:02 » |
|
ordinea literelor reprezentate in memoria calculatorului este:
litere: 'A' < 'B' < .... < 'Z' < 'a' < 'b' < .... < 'z' coduri ASCII: 65 66 90 97 98 122
in exemplul tau, consideri ca 'b' < 'F' ceea ce este fals, conform tabelului ASCII.
|
|
|
Memorat
|
Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
|
|
|
•fireatmyself
|
|
« Răspunde #6 : Octombrie 18, 2007, 16:36:08 » |
|
cum faci sortarea? descrie un pic principiul
|
|
|
Memorat
|
Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
|
|
|
•fireatmyself
|
|
« Răspunde #7 : Octombrie 18, 2007, 16:53:39 » |
|
dubios, dar totul e bine cand se termina cu un max
|
|
|
Memorat
|
Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
|
|
|
•fireatmyself
|
|
« Răspunde #8 : Octombrie 18, 2007, 17:06:46 » |
|
sigur. ti l-am trimis intr-un mesaj privat.
|
|
|
Memorat
|
Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
|
|
|
•anna_bozianu
|
|
« Răspunde #9 : Decembrie 18, 2007, 19:26:05 » |
|
Va rog sa imi dati doua precizari legate de fisierul de intrare : 1) Linia din fisierul de intrare se termina cu "\n" ? 2) Linia din fisirerul de intrare poate sa contina spatii? Multumiri. Nu mai e cazul. Intre timp am rezolvat problema si am descoperit : 1) linia se termina cu '\n' 2) linia nu contine spatii
|
|
« Ultima modificare: Decembrie 18, 2007, 21:28:52 de către Bozianu Ana »
|
Memorat
|
|
|
|
|
•Florian
|
|
« Răspunde #11 : Decembrie 28, 2007, 15:27:58 » |
|
Ai putea sa vezi testele de la oji 2007.
|
|
|
Memorat
|
|
|
|
•Robytzza
|
|
« Răspunde #12 : Decembrie 28, 2007, 15:30:02 » |
|
|
|
|
Memorat
|
|
|
|
•Robytzza
|
|
« Răspunde #13 : Decembrie 28, 2007, 15:46:27 » |
|
am vazut ce greseam puneam / in loc de \ insa nushtiu cum sa pun doar un \ help multumesc anticipat
|
|
|
Memorat
|
|
|
|
•Florian
|
|
« Răspunde #14 : Decembrie 28, 2007, 15:47:51 » |
|
printf("\\");
|
|
|
Memorat
|
|
|
|
•ciprianf
|
|
« Răspunde #15 : Martie 19, 2008, 22:02:47 » |
|
Am si eu o problema. am facut bine merci problema, merge pe toate testele mele + cele de la oji de 100 p. numai ca aici cand trimit sursa iau KBS 11. Am citit cam ce ar insemna acest KBS11 din "documentatie" dar am avut grija sa nu accesez memorie nepermisa, am declarat vectorii suficienti de largi, totul ar trebui sa fie ok, dar nu e! Ma poate ajuta si pe mine cineva?
Later Edit: Never Mind, am rezolvat.sincer nu prea stiu ce avea...doar m-am jucat putin cu lungimea vectorilor. PS daca depasesc limita de memorie se poate sa iau KBS?
|
|
|
Memorat
|
|
|
|
•Florian
|
|
« Răspunde #16 : Martie 19, 2008, 22:17:38 » |
|
PS daca depasesc limita de memorie se poate sa iau KBS?
Da.
|
|
|
Memorat
|
|
|
|
•f.v.anton
Strain
Karma: 1
Deconectat
Mesaje: 35
|
|
« Răspunde #17 : Noiembrie 04, 2008, 12:26:05 » |
|
imi da eroare pt functia strrev. Why?
|
|
|
Memorat
|
|
|
|
•wefgef
|
|
« Răspunde #18 : Noiembrie 04, 2008, 17:04:29 » |
|
Functia strrev nu face parte din standardul C. Poti foarte usor sa scrii o varianta proprie, de mana
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•Robybrasov
Strain
Karma: 3
Deconectat
Mesaje: 33
|
|
« Răspunde #19 : Iunie 18, 2009, 16:54:58 » |
|
mi-am evaluat programul cu testele de la oji, si imi intra lejer in timp sub 4ms si memorie sub 16kb pe toate testele. aici vad ca imi da tle pe toate, desi restrictiile datelor de intrare sunt aceleasi ca la oji. gresesc eu undeva si nu-mi dau seama?
|
|
|
Memorat
|
|
|
|
•Florian
|
|
« Răspunde #20 : Iunie 18, 2009, 17:27:25 » |
|
M-am uitat pe timpii tai, si banuiesc ca iti intra in ciclu infinit. Sursa mea a luat 4 ms/test, maxim. Vezi ca functiile pt siruri de caractere se comporta diferit pe linux fata de windows. Ai grija ce faci cu '\n'-urile citite, ar fi bine sa pui '\0' la sfarsitul fiecarui sir [ si atunci cand scazi nivelul stivei, sa faci NULL si sirul corespunzator nivelului ]. Am vazut ca ai si un warning. Poate e de acolo. Nu prea are ce sa fie... Spor!
|
|
|
Memorat
|
|
|
|
•Robybrasov
Strain
Karma: 3
Deconectat
Mesaje: 33
|
|
« Răspunde #21 : Iunie 18, 2009, 18:09:34 » |
|
Pe linux am lucrat si imi merge perfect. M-am folosit de evaluatorul lui sandyxp si de testele oficiale de la oji. Da, de fiecare data cand am coborat am pus 0 pe acel nivel, si citesc cu fgets, si am fost atent si la '\n'-uri. L.E: S-a rezolvat. Problema a fost ca eu citeam cu fgets sirul de intrare. Cand am citit caracter cu caracter a mers. Dubios, oare ce-o fi avand fgets?
|
|
« Ultima modificare: Iunie 19, 2009, 09:37:30 de către Robert Hangu »
|
Memorat
|
|
|
|
•Florian
|
|
« Răspunde #22 : Iunie 18, 2009, 19:45:32 » |
|
Atunci, vezi poate e de la warningul asta: array subscript has type 'char'. Vezi sa faci convertire cand apelezi vector[caracter] ( ceva de genu: vector[(int)caracter] ). Eu am facut citirea caracter cu caracter... Chiar nu stiu ce poate sa aiba...
|
|
|
Memorat
|
|
|
|
•dornescuvlad
|
|
« Răspunde #23 : Decembrie 14, 2009, 16:58:27 » |
|
ma chinui de 2 zile la www.infoarena.ro/problema/dir si iau doar 60 de puncte (testele 6-9 inclusiv) sunt gresite.m-am uitat pe testele de la oji..... problema e ca nu imi parcurge toate folderele, la testele astea mai mari, si nu am cum sa ma corectez.puteti sa-mi dati vreun exemplu va rog , sa testez daca imi merge bine. chiar nu stiu, nu imi dau seama ce nu e in regula...poate am uitat vreun caz particular sau ceva?
|
|
|
Memorat
|
|
|
|
•pauldb
|
|
« Răspunde #24 : Decembrie 14, 2009, 17:51:44 » |
|
Fiecare problema de pe site are un topic destinat discutiilor pe marginea ei. Pune intrebarile acolo, sa poata castiga toata lumea de pe marginea sfaturilor date!
|
|
|
Memorat
|
Am zis
|
|
|
|