•filipb
|
|
« : Decembrie 06, 2008, 19:51:13 » |
|
Aici puteti discuta despre problema Trie.
|
|
|
Memorat
|
|
|
|
•mika17
Strain
Karma: 8
Deconectat
Mesaje: 33
|
|
« Răspunde #1 : Decembrie 30, 2008, 18:40:50 » |
|
pt cei ce folositi streamuri si eventual nu luati 100 aveti grija la citire ... ceva genul while(!fin.eof()) fin>>op>>cuv
poate cauza buguri de ex daca nu gaseste cifre/caractere compatibile sau ajunge la sf fisierului si atunci citirea nu mai are loc si raman vechile valori si algoritmul le foloseste pe acelea / calc de 2 ori pt aceleasi valori ... pt aceasta prob puteti folosi ceva gen if( fin.good() ) { op1() op2() etc}
acest mic detaliu a facut la mn dif dintre 30p si 100p [edit] e o idee buna sa faci bucatile de cod vizibile folosind tagul "[ code ]"
|
|
« Ultima modificare: Decembrie 30, 2008, 18:48:16 de către Sima Cotizo »
|
Memorat
|
|
|
|
•Bit_Master
|
|
« Răspunde #2 : Martie 21, 2010, 12:56:53 » |
|
De ce nu s-au reglat restrictiile problemei sa suporte cei 50MB limita, pt ca testele de evauare sa fie de toate genurile, nu neaparat omogene. Mi se pare ciudat sa favorizezi o metoda de rezolvare prin intermediul testelor.
|
|
|
Memorat
|
|
|
|
•pauldb
|
|
« Răspunde #3 : Martie 21, 2010, 13:12:24 » |
|
Aceasta problema este in scop educational. Este normal sa fie evidentiata o anumita rezolvare pe care le-o propunem ca exercitiu utilizatorilor.
|
|
|
Memorat
|
Am zis
|
|
|
•APOCALYPTO
|
|
« Răspunde #4 : Iulie 04, 2010, 21:11:31 » |
|
A mai luat cineva 100 folosind '\n' in afara de Lucian? Eu iau 0 puncte asa si 100 daca folosesc strlen() sau '\0'.
|
|
« Ultima modificare: Iulie 04, 2010, 21:29:33 de către Dragos »
|
Memorat
|
|
|
|
•amadaeus
Client obisnuit
Karma: 28
Deconectat
Mesaje: 93
|
|
« Răspunde #5 : Iulie 04, 2010, 22:25:39 » |
|
Te referi, probabil, la caracterul in functie de care te opresti din recursivitate, iar asta e un detaliu strict legat de implementarea algoritmului tau. Trebuie sa te uiti mai atent peste notiunile de null-terminated string si line break si vei vedea ca iti vei putea face sursa, cu cateva modificari minore de indici, sa functioneze si cu '\n'
|
|
|
Memorat
|
"one of these days I'm going to cut you into little pieces..."
|
|
|
•APOCALYPTO
|
|
« Răspunde #6 : Iulie 05, 2010, 11:20:12 » |
|
Te referi, probabil, la caracterul in functie de care te opresti din recursivitate, iar asta e un detaliu strict legat de implementarea algoritmului tau. Trebuie sa te uiti mai atent peste notiunile de null-terminated string si line break si vei vedea ca iti vei putea face sursa, cu cateva modificari minore de indici, sa functioneze si cu '\n' Am inteles de ce mergea la tine, fgets citeste si '\n', iar .getline() citeste '\n' dar il da afara dupa. La ce te referi prin "indici"?
|
|
|
Memorat
|
|
|
|
•amadaeus
Client obisnuit
Karma: 28
Deconectat
Mesaje: 93
|
|
« Răspunde #7 : Iulie 05, 2010, 15:20:22 » |
|
Nu m-am uitat atent peste funcia ta de citire, imi pare rau. Initial crezusem ca e vorba despre cum accesezi caracterele in array-ul in care le memorezi, facand un pas suplimentar pentru a trece de la '\n' la '\0'.
|
|
|
Memorat
|
"one of these days I'm going to cut you into little pieces..."
|
|
|
•APOCALYPTO
|
|
« Răspunde #8 : Iulie 05, 2010, 16:03:28 » |
|
Nu m-am uitat atent peste funcia ta de citire, imi pare rau. Initial crezusem ca e vorba despre cum accesezi caracterele in array-ul in care le memorezi, facand un pas suplimentar pentru a trece de la '\n' la '\0'.
Nu-i nici o problema!
|
|
|
Memorat
|
|
|
|
•nicolaetitus12
Strain
Karma: 0
Deconectat
Mesaje: 10
|
|
« Răspunde #9 : Iulie 19, 2010, 22:13:42 » |
|
La metoda bruta stergerea nu e O(L*N) ?
|
|
|
Memorat
|
|
|
|
•zsee
Strain
Karma: 0
Deconectat
Mesaje: 6
|
|
« Răspunde #10 : Iulie 22, 2010, 14:36:29 » |
|
"Pentru toate operatiile, cuvantul w este format din maxim 20 de caractere din intervalul 'a'..'z'" Ar trebui corectat, ca testele contin si numere...
|
|
|
Memorat
|
|
|
|
•gabitzish1
|
|
« Răspunde #11 : Iulie 22, 2010, 15:12:07 » |
|
M'am uitat peste cateva teste si nu am vazut cifre in interiorul cuvintelor. Care teste contin cifre?
|
|
|
Memorat
|
|
|
|
•zsee
Strain
Karma: 0
Deconectat
Mesaje: 6
|
|
« Răspunde #12 : Iulie 22, 2010, 18:13:49 » |
|
scz am gresit eu... miam dat seama care era problema... Asa apare la mine in notepad: 0 ab0 abac3 qfksxe2 (...) De fapt notepadul era de vina, ca in alte aplicatii se vede normal...
|
|
|
Memorat
|
|
|
|
•S7012MY
|
|
« Răspunde #13 : Septembrie 20, 2010, 19:08:34 » |
|
La problema iau 30 de puncte cu multe sigsegv si incorecturi. Banuiesc ca e din cauza citirii deoarece atunci cand nu am newline la sf fis. merge orice test. Citesc asa: for( ;!f.eof();f.get()) { f>>ce; f.getline(cuv,50); if(cuv[strlen(cuv)]!='\0') cuv[strlen(cuv)]='\0'; if(!ce) t->insert(t,cuv); else if(ce==1) t->del(t,cuv); else if(ce==2) g<<t->query(t,cuv)<<'\n'; else if(ce==3) g<<t->prefix_comun(t,cuv,0)<<'\n'; } sursa e asta:http://infoarena.ro/job_detail/486230?action=view-source
Ma poate ajuta cineva sa o fac sa mearga de 100?Nu mai am nevoie. Celor carora nu le iese sa foloseasca if(fin.good){ switch (op) etc } (daca fol streamuri de c++)
|
|
« Ultima modificare: Septembrie 20, 2010, 19:27:33 de către Trimbitas Petru »
|
Memorat
|
|
|
|
•livium
Strain
Karma: -2
Deconectat
Mesaje: 21
|
|
« Răspunde #14 : Februarie 04, 2011, 14:01:11 » |
|
Stie cineva ce face *s - 'a' ? Ca eu nu inteleg.
|
|
|
Memorat
|
|
|
|
•pauldb
|
|
« Răspunde #15 : Februarie 04, 2011, 20:51:32 » |
|
Inseamna a cata litera din alfabet e caracterul catre care indica pointer-ul s.
|
|
|
Memorat
|
Am zis
|
|
|
•livium
Strain
Karma: -2
Deconectat
Mesaje: 21
|
|
« Răspunde #16 : Februarie 05, 2011, 15:53:55 » |
|
Merci! Mi-am dat si eu seama de asta la scurt timp dupa ce am pus intrebarea.
|
|
|
Memorat
|
|
|
|
•maritim
|
|
« Răspunde #17 : Iulie 08, 2011, 22:42:52 » |
|
Salut ! Ma puteti ajuta si pe mine va rog, sa inteleg care este problema implementarii mele? Iau numai 10 puncte, cu toate ca am luat cateva teste, le-am comparat si toate rezultatele imi dau ok . Multumesc! L.E. : Multumesc frumos PlayLikeNeverB4 ca ai incercat sa ma ajuti! Se pare ca nu initializam o valoare din Trie cu 1, cea care pastra numarul de prefixe din fiecare elemnt!
|
|
« Ultima modificare: Iulie 09, 2011, 01:08:41 de către Lambru Andrei Cristian »
|
Memorat
|
|
|
|
•razyelx
Client obisnuit
Karma: 0
Deconectat
Mesaje: 82
|
|
« Răspunde #18 : Octombrie 13, 2011, 00:46:33 » |
|
rog pe cineva care are putin timp sa se uite peste sursa mea. in mare parte am segmentation fault si incorect. merge pe exemplu.
|
|
|
Memorat
|
|
|
|
•algotroll
Strain
Karma: 0
Deconectat
Mesaje: 3
|
|
« Răspunde #19 : Martie 24, 2012, 23:29:08 » |
|
Va rog frumos daca poate cineva sa isi dea seama ce nu e in regula cu implementarea mea, ma streseaza de mai mult de o ora. Mai precis, pentru struct nod { nod* nlist[26]; int ap; nod() { memset(nlist,0,sizeof(nlist)); ap=0; } }; void insert(nod* pN, string &a) { for (int i=0;i<a.size();i++) { if (pN->nlist[alf(a[i])]==0) { nod* pTmp = new nod; pN->nlist[alf(a[i])]=pTmp; pN=pTmp; } else pN=pN->nlist[alf(a[i])]; } pN->ap++; } int pre_com(nod* pN, string &a)//prefix comun { for (int i=0;;i++) { if (pN->nlist[alf(a[i])]==0) return i; //asta e singura verificare pt incheierea pN=pN->nlist[alf(a[i])]; // buclei; frunza are nlist nula } } cu alf(x)==x-'a' efectuarea nod trie; insert(&trie,"aa"); pre_com(&trie,"aa"); da segmentation fault. pe gdb nu apare problema.
|
|
|
Memorat
|
|
|
|
•Prostu
|
|
« Răspunde #20 : Martie 25, 2012, 00:35:10 » |
|
Nu imi este clar de ce iti da KBS 11 in cazul pe care l-ai trecut tu acolo, dar din restul codului observ ca nu folosesti variabila ap in mod consistent. In unele cazuri consideri ca este numarul de aparitii al cuvintelor iar in alte cazuri consideri ca este numarul de cuvinte dintr-un subarbore. Cred ca vrei sa folosesti 2 variabile separate pentru asta. Asta explica de ce iei incorect, dar sunt sanse mari ca KBS-ul sa fie din aceiasi cauza.
|
|
|
Memorat
|
|
|
|
•algotroll
Strain
Karma: 0
Deconectat
Mesaje: 3
|
|
« Răspunde #21 : Martie 25, 2012, 09:07:06 » |
|
Nu imi este clar de ce iti da KBS 11 in cazul pe care l-ai trecut tu acolo, dar din restul codului observ ca nu folosesti variabila ap in mod consistent. In unele cazuri consideri ca este numarul de aparitii al cuvintelor iar in alte cazuri consideri ca este numarul de cuvinte dintr-un subarbore. Cred ca vrei sa folosesti 2 variabile separate pentru asta. Asta explica de ce iei incorect, dar sunt sanse mari ca KBS-ul sa fie din aceiasi cauza.
Da, ai dreptate, trebuia sa numar cate aparitii au ascendentii fiecarui nod. Nu mi-am dat seama ca fara stergerea se face prea dificil. mersi!
|
|
|
Memorat
|
|
|
|
•Alexxino7
Strain
Karma: 4
Deconectat
Mesaje: 14
|
|
« Răspunde #22 : Octombrie 07, 2012, 14:34:31 » |
|
what the hell is this? http://infoarena.ro/job_detail/795049Nu prea le am cu pointerii dar sursa ruleaza fara probleme pe calculatorul meu. Dupa ce am scos asserturile am luat iar killed by signal 11 http://infoarena.ro/job_detail/795053, deci banuiesc ca se declanseaza vreunul din ele. Dar la mine pe calc nu se declanseaza nici unul. Later Edit: Nu mai este nevoie i-am dat de cap pana la urma.
|
|
« Ultima modificare: Octombrie 07, 2012, 20:38:25 de către Alexandru Popescu »
|
Memorat
|
|
|
|
•tudy23
Strain
Karma: 0
Deconectat
Mesaje: 3
|
|
« Răspunde #23 : Martie 23, 2013, 19:53:32 » |
|
Am rezolvat problema si primesc doar 5 puncte. Am verificat fisierul meu .out cu fisierele de test si da bine pe cel putin 4(atat am verificat, atat manual cat si folosind un program). E cineva binevoitor sa se uite peste sursa?Poate fac vre-o afisare gresit. Multumesc!
|
|
|
Memorat
|
|
|
|
•PlayLikeNeverB4
|
|
« Răspunde #24 : Martie 23, 2013, 20:36:21 » |
|
Vezi ca ai niste warning-uri la compilare. Posibil ca de acolo sa vina diferenta.
|
|
|
Memorat
|
|
|
|
|