Pagini: 1 [2]   În jos
  Imprimă  
Ajutor Subiect: 636 Restante  (Citit de 9644 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« 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.
Cod:
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
De-al casei
***

Karma: 11
Deconectat Deconectat

Mesaje: 104



Vezi Profilul
« 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.
Cod:
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.

Cod:
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
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #27 : Martie 14, 2008, 11:15:48 »

Am incercat si io faza cu sortarea si nu vrea sa sorteze   Confused
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #28 : Martie 14, 2008, 11:42:18 »

ce sortare ai folosit?
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #29 : Martie 14, 2008, 11:55:19 »

ce sortare ai folosit?

cea prezentata mai sus de sima cotizo  Smile
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« 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
Nu mai tace
*****

Karma: 194
Deconectat Deconectat

Mesaje: 333



Vezi Profilul
« Răspunde #31 : Martie 15, 2008, 17:44:12 »

Mai bun e merge-ul...e sigur in toate cazurile.  Thumb up
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« 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  Smile
Memorat
fogab
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 14



Vezi Profilul
« Răspunde #33 : Aprilie 30, 2008, 05:04:20 »

Iata o chestie ciudata:

Cod:

...

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
Nu mai tace
*****

Karma: 218
Deconectat Deconectat

Mesaje: 641



Vezi Profilul
« 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
Cod:
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 Deconectat

Mesaje: 14



Vezi Profilul
« Răspunde #35 : Aprilie 30, 2008, 17:33:17 »

 Very Happy
Mea culpa ... nu ma mai pun la debug 5 AM. Thx.

PS:

Citat
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 :

Cod:
int comp(int a, int b) {
return strcmp( m[a], m[b] );

..trebuie modificata la fel.
Memorat
cosser
Strain
*

Karma: 4
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« 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 Deconectat

Mesaje: 91



Vezi Profilul
« Răspunde #37 : Octombrie 09, 2008, 20:29:41 »

ba da e eficient (poate mai rapid) Smile si poti pentru restu sa faci cu quicksort .
succes ...
Memorat
cosser
Strain
*

Karma: 4
Deconectat Deconectat

Mesaje: 39



Vezi Profilul
« 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)  Smile 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?   Applause
Memorat
AnDrEwBoY
Strain
*

Karma: 4
Deconectat Deconectat

Mesaje: 36



Vezi Profilul
« 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 Deconectat

Mesaje: 9



Vezi Profilul
« 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
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« 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 Deconectat

Mesaje: 38



Vezi Profilul
« 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
Vorbaret
****

Karma: 54
Deconectat Deconectat

Mesaje: 192



Vezi Profilul
« 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
Pagini: 1 [2]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines