•sima_cotizo
|
 |
« Răspunde #25 : Februarie 24, 2008, 09:42:39 » |
|
Pai si in O nu vei avea indicii liniilor sortati dupa criteriul pe care il vrei tu? Daca de exemplu acum vei afisa matricea in ordinea liniilor din O, vei avea acelasi rezultat cu a interschimba liniile. for (i=0; i<n; ++i) printf("%s\n", A[O[i]]); // ma folosesc de faptul ca matricea e de char
Ca sa folosesti in general matricea sortata, cand vei parcurge de la 0 la n-1 liniile le vei accesa pe O[ i ], nu direct pe i...
|
|
|
Memorat
|
|
|
|
•ciprianf
|
 |
« Răspunde #26 : Februarie 24, 2008, 09:48:31 » |
|
Pai si in O nu vei avea indicii liniilor sortati dupa criteriul pe care il vrei tu? Daca de exemplu acum vei afisa matricea in ordinea liniilor din O, vei avea acelasi rezultat cu a interschimba liniile. for (i=0; i<n; ++i) printf("%s\n", A[O[i]]); // ma folosesc de faptul ca matricea e de char
Ca sa folosesti in general matricea sortata, cand vei parcurge de la 0 la n-1 liniile le vei accesa pe O[ i ], nu direct pe i... Da, in fine, eu eram curios cum se sorteaza fizic, dar merge si asa:D, da-mi add pe mes:ciprianfarcasanu sa te mai intreb cate ceva PS:Am incercat cu varianta ta(am scris identic) si nu vrea, daca am 2 linii identice le interschimba intre ele, altfel nimic. int v[36009]; char m[36009][20]; int comp(int a, int b) { return strcmp( m[a], m[b] ); int main(){ .......... for(i=0;i<n;i++) v[i]=i; sort(v,v+n,comp); for(i=0;i<n;i++) printf("%s\n",m[v[i]]); } PPS: Si matricea si vectorul incep de pe pozitia 0
|
|
« Ultima modificare: Februarie 24, 2008, 10:37:56 de către Farcasanu Ciprian »
|
Memorat
|
|
|
|
•Mishu91
|
 |
« Răspunde #27 : Martie 14, 2008, 11:15:48 » |
|
Am incercat si io faza cu sortarea si nu vrea sa sorteze 
|
|
|
Memorat
|
|
|
|
•toni2007
|
 |
« Răspunde #28 : Martie 14, 2008, 11:42:18 » |
|
ce sortare ai folosit?
|
|
|
Memorat
|
|
|
|
•Mishu91
|
 |
« Răspunde #29 : Martie 14, 2008, 11:55:19 » |
|
ce sortare ai folosit?
cea prezentata mai sus de sima cotizo 
|
|
|
Memorat
|
|
|
|
•toni2007
|
 |
« Răspunde #30 : Martie 14, 2008, 18:15:10 » |
|
mai bine folosesti qsortu si aproximativ aceeasi functie de comparare (trebe doar facuta conversia de la const void la char*) si aia merge sigur (am luat 100 cu ea din prima)
|
|
|
Memorat
|
|
|
|
•savim
|
 |
« Răspunde #31 : Martie 15, 2008, 17:44:12 » |
|
Mai bun e merge-ul...e sigur in toate cazurile. 
|
|
|
Memorat
|
|
|
|
•Mishu91
|
 |
« Răspunde #32 : Martie 17, 2008, 21:11:04 » |
|
mai bine folosesti qsortu si aproximativ aceeasi functie de comparare (trebe doar facuta conversia de la const void la char*) si aia merge sigur (am luat 100 cu ea din prima)
mersi... qsortu asta chiar e bun pt ca merge si in borland (fiind in stdlib), desi e mai greu de folosit 
|
|
|
Memorat
|
|
|
|
•fogab
Strain
Karma: 0
Deconectat
Mesaje: 14
|
 |
« Răspunde #33 : Aprilie 30, 2008, 05:04:20 » |
|
Iata o chestie ciudata: ...
string K[MAX]; int N,R[MAX];
int comp(int a,int b){ return K[b] > K[a]; }
int comp2(int a,int b){ return K[b].compare(K[a]); }
...
sort(R,R+N,comp); // resetare R, R[i] =i; sort(R,R+N,comp2);
...
prima sortare merge, al doilea pare a nu avea nici un efect asupra arrayului. ceva idee?
|
|
« Ultima modificare: Aprilie 30, 2008, 06:23:06 de către Fodor Gabor »
|
Memorat
|
|
|
|
•stef2n
|
 |
« Răspunde #34 : Aprilie 30, 2008, 11:06:36 » |
|
Metoda "compare" a string-ului e pe modelul functiei "strcmp" din C si returneaza -1, 0, sau 1. Pentru sortare descrescatoare incearca int comp2(int a, int b) { return K[a].compare(K[b]) > 0; }
|
|
|
Memorat
|
Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
|
|
|
•fogab
Strain
Karma: 0
Deconectat
Mesaje: 14
|
 |
« Răspunde #35 : Aprilie 30, 2008, 17:33:17 » |
|
 Mea culpa ... nu ma mai pun la debug 5 AM. Thx. PS: int strcmp ( const char * str1, const char * str2 ); ... A zero value indicates that both strings are equal. A value greater than zero indicates that the first character that does not match has a greater value in str1 than in str2; And a value less than zero indicates the opposite.
Deci sursa : int comp(int a, int b) { return strcmp( m[a], m[b] );
..trebuie modificata la fel.
|
|
|
Memorat
|
|
|
|
•cosser
Strain
Karma: 4
Deconectat
Mesaje: 39
|
 |
« Răspunde #36 : Octombrie 09, 2008, 17:25:30 » |
|
avand in vedere ca pentru siruri mici, sortarea prin insertie se descurca destul de bine nu ar fi eficient daca am sorta prin insertie cuvintele si daca am folosi quick-sort, eventual sort din STL, pentru sirul de cuvinte?
sper totusi ca 16 sa nu fie o valoare prea mare...
|
|
|
Memorat
|
|
|
|
•andrei-alpha
Client obisnuit

Karma: 103
Deconectat
Mesaje: 91
|
 |
« Răspunde #37 : Octombrie 09, 2008, 20:29:41 » |
|
ba da e eficient (poate mai rapid)  si poti pentru restu sa faci cu quicksort . succes ...
|
|
|
Memorat
|
|
|
|
•cosser
Strain
Karma: 4
Deconectat
Mesaje: 39
|
 |
« Răspunde #38 : Octombrie 09, 2008, 21:50:35 » |
|
a iesit destul de bine, am testat si cu quick randomizat si cu cel ce alege pivot, primul element. daca as folosi sort() din STL ar iesi si mai bine dar nu are rost un algoritm industrial (cel putin pentru problema asta)  in fine.. m-am uitat si la rezultatul tau, andrei-alpha, am observat ca ai scos niste timpi foarte buni si memorie deasemenea, ce implementare ai folosit? 
|
|
|
Memorat
|
|
|
|
•AnDrEwBoY
Strain
Karma: 4
Deconectat
Mesaje: 36
|
 |
« Răspunde #39 : Martie 26, 2009, 11:55:27 » |
|
As dori un test mai dificil pentru aceasta,iau doar 10 puncte si nu reusesc sa`mi dau seama ce gresesc.
|
|
|
Memorat
|
|
|
|
•RoCky
Strain
Karma: 0
Deconectat
Mesaje: 9
|
 |
« Răspunde #40 : Decembrie 20, 2009, 15:53:03 » |
|
Testul 4 are ceva mai "special" ?
|
|
« Ultima modificare: Decembrie 20, 2009, 18:02:54 de către Romila Remus Arthur »
|
Memorat
|
|
|
|
•SpiderMan
|
 |
« Răspunde #41 : Februarie 25, 2010, 19:32:46 » |
|
Imi da WA la 7 teste. Nu ma puteti ajuta cu niste teste ?
|
|
|
Memorat
|
|
|
|
•Andrei.Xwe
Strain
Karma: -4
Deconectat
Mesaje: 38
|
 |
« Răspunde #42 : Iulie 02, 2012, 20:35:12 » |
|
Imi da si mie cineva un test mai mare?Iau 10 puncte si 9 WA...
|
|
|
Memorat
|
|
|
|
•danalex97
|
 |
« Răspunde #43 : Iulie 03, 2012, 12:15:06 » |
|
Iti poti genera tu teste. Generezi un in , iei o sursa de 100 si ai out-ul. Apoi poti sa iti dai seama unde ai gresit. Succes.
|
|
|
Memorat
|
|
|
|
|