•dornescuvlad
|
 |
« Răspunde #25 : Aprilie 21, 2010, 21:39:29 » |
|
Eu am rulat sursa ta, si arata cum trebuie, probabil ai modificat ceva si ai uitat sa compilezi sau ... nu stiu  nu mai tot repeta ba ce zic altii, se numeste POST HUNTING si se sanctioneaza cu ban
|
|
|
Memorat
|
|
|
|
|
•andunhill
|
 |
« Răspunde #27 : Aprilie 22, 2010, 07:44:47 » |
|
Cred ca stiu de ce imi afiseaza asa. Eu mai am o problema cu back cu permutari si cred ca asta e cauza deoarece mie la back la permutari imi afiseaza ceva in genu. Dar nu sunt sigur.
|
|
|
Memorat
|
|
|
|
•barneystinson
Strain
Karma: -1
Deconectat
Mesaje: 11
|
 |
« Răspunde #28 : August 13, 2010, 00:42:38 » |
|
salut, ms pt info, chiar nu ii dadeam de cap... insa nu am inteles chiar tot. pt exemplu n=4 k=3: programu tau face asa: un vector 0 0 0 1 ( i1=1,i2=2,i3=3,i4=4 nu am pus si primu 0 de indice 0 ca sa fie usor de vazut) si face asa 0 0 0 1 printeaza de la 1 la 4 indicele termenului care nu e 0 aici fiind 1 2 3 0 0 1 0 printeaza 1 2 4 0 1 0 0 printeaza 1 3 4 1 0 0 0 iar aici am problema pt ca eu anticipam sa schimbe intre ei cei 2 de 0 din coada, desi ar fi fost o permutare identica ca a 3a si ar fi printat tot 1 3 4... de ce sare peste ea? stiu ca da rezultatul corect dar de ce face asa si cum? e prea tare next_permutation
|
|
|
Memorat
|
|
|
|
•ionutz32
Strain
Karma: 16
Deconectat
Mesaje: 18
|
 |
« Răspunde #29 : August 13, 2010, 19:31:53 » |
|
next_permutation tine cont doar de vectorul dat ca parametru, nu de a cata oara a fost apelat. Daca pentru sirul {0,1,0,0} nu ar schimba nimic pe motiv ca se interschimba 0-urile, programul ar intra in ciclu infinit pentru ca vectorul ar ramane mereu neschimbat.
next_permutation genereaza urmatoarea permutare distincta.
|
|
|
Memorat
|
|
|
|
•wefgef
|
 |
« Răspunde #30 : August 13, 2010, 19:38:44 » |
|
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•barneystinson
Strain
Karma: -1
Deconectat
Mesaje: 11
|
 |
« Răspunde #31 : August 14, 2010, 01:14:03 » |
|
ms frumos, nu prea stiam eu ce sunt permutarile. am cautat si acum inteleg. ms din nou
|
|
|
Memorat
|
|
|
|
•judgment7
Strain
Karma: -1
Deconectat
Mesaje: 1
|
 |
« Răspunde #32 : Martie 02, 2011, 15:28:18 » |
|
mda, deci dupa 2-3 ani, mai da cineva un comment aici, tineti minte "\n" face diferenta, e mai eficient decat endl se pare, pentru ca luam 80 puncte cu endl si 100 cu "\n"...mda 
|
|
|
Memorat
|
|
|
|
•SpiderMan
|
 |
« Răspunde #33 : Martie 02, 2011, 15:33:19 » |
|
Da, dupa cum poti vedea explicat aici.
|
|
|
Memorat
|
|
|
|
•noobakaflo
Strain
Karma: 1
Deconectat
Mesaje: 8
|
 |
« Răspunde #34 : Noiembrie 30, 2011, 21:39:00 » |
|
Am vazut ca nu s-a mai raspuns de 120 de zile ,dar am zis sa incerc.. Problema o rezolvai altfel,dar ma intreb de ce pentru sursa urmatoare iau 0 puncte.Am consultat atasamentele si,pentru cel putin primele 2 teste rezultatul e corect. Ce gresesc ? Fac aranjamente,singura diferenta e in functia valid(). #include<fstream> using namespace std; fstream f("combinari.in",ios::in); fstream g("combinari.out",ios::out); int n,p,st[100];
void tipar() { int i; for(i=0; i<p; i++) g<<st[i]<<" "; g<<"\n"; }
void init(int k) { st[k]=0; }
int succesor(int k) { if(st[k]<n) { st[k]++; return 1; } else return 0; }
int valid(int k) { if(k>0) if(st[k-1]>st[k]) return 0; return 1; }
void back(int k) { if(k==n) tipar(); else { init(k); while(succesor(k)) if(valid(k)) back(k+1); } }
int main() { f>>n>>p; back(0); f.close(); g.close(); return 0; }
|
|
|
Memorat
|
|
|
|
•soriyn
|
 |
« Răspunde #35 : Noiembrie 30, 2011, 22:14:14 » |
|
Cred ca problema ta este unde verificarea aia daca k==n. Gandeste-te ca atunci cand vor fi egale o sa afisezi fara sa mai generezi elementul de pe ultima pozitie. Incearca ceva de genu if(valid(k)) if(k==n) tipar(); else back(k+1);
|
|
|
Memorat
|
|
|
|
•noobakaflo
Strain
Karma: 1
Deconectat
Mesaje: 8
|
 |
« Răspunde #36 : Decembrie 01, 2011, 12:54:46 » |
|
^ Elementele vor fi de la 0 la n-1 in stiva,pornesc cu back(0),deci nu cred ca e de aici... Repet,la mine afiseaza ce trebuie... 
|
|
|
Memorat
|
|
|
|
•VisuianMihai
|
 |
« Răspunde #37 : Ianuarie 20, 2012, 16:15:31 » |
|
Backul e cel mai bun? Nu e mai buna o combinatorica cu recurenta c[i ][j] = c[i-1][j] + c[i-1][j-1]; c[i ][j] = numarul de combinari i luate cate j Pardon... ma refeream la numarul de combinari ... 
|
|
« Ultima modificare: Ianuarie 20, 2012, 16:29:57 de către Mihai Visuian »
|
Memorat
|
|
|
|
•superman_01
Client obisnuit

Karma: 14
Deconectat
Mesaje: 52
|
 |
« Răspunde #38 : Aprilie 14, 2013, 22:05:51 » |
|
O problema destul de interesanta care se bazeaza pe combinari este Pluricex.
|
|
|
Memorat
|
|
|
|
•metalkitten
Strain
Karma: -1
Deconectat
Mesaje: 2
|
 |
« Răspunde #39 : Noiembrie 21, 2013, 14:26:57 » |
|
pentru un n=50, cam cat ar trebui sa fie timpul maxim de executie? sunt cam off-topic, dar am o tema care se bazeaza pe asta si n-ul maxim e 50... 
|
|
|
Memorat
|
|
|
|
•harababurel
Client obisnuit

Karma: 23
Deconectat
Mesaje: 62
|
 |
« Răspunde #40 : Noiembrie 21, 2013, 16:48:24 » |
|
In cel mai rau caz, ai de generat C(50, 25) = 126.410.606.437.752 configuratii (de ordinul 1014). Pentru C(50, 7) = 99.884.400 ~= 100 de milioane de configuratii, procesorul meu are nevoie de 2.7 secunde, excluzand tiparirea (cu tiparire, mi se executa in 91 s). Presupunand ca timpul de executie creste liniar in functie de numarul de operatii (nu-i chiar asa), ar trebui o limita de 3.417.036 secunde ~= 40 de zile.
|
|
|
Memorat
|
|
|
|
•metalkitten
Strain
Karma: -1
Deconectat
Mesaje: 2
|
 |
« Răspunde #41 : Noiembrie 21, 2013, 17:31:11 » |
|
multumesc  vad eu ce fac 
|
|
|
Memorat
|
|
|
|
|