Titlul: 017 Combinari Scris de: Andrei Grigorean din Martie 10, 2008, 16:27:28 Aici puteti discuta despre problema Combinari (http://infoarena.ro/problema/combinari).
Titlul: Răspuns: 017 Combinari Scris de: hulparu adrian din Martie 11, 2008, 11:28:23 Nu ar trebui ca backul iterativ sa fie mai eficient decat ce recursiv? Io iau 90 cu un back iterativ, si asta dupa ce am schimbat citirea si scrierea in fisiere, pt k luam doar 80 cu streamuri... :-k Ciudata si chestia asta...
Imi poate spune si mie cineva cum as putea optimiza backul meu iterativ k sa iau 100?? Titlul: Răspuns: 017 Combinari Scris de: Florin Pg din Martie 11, 2008, 11:40:14 Am vazut ca in sursa ta tot faci verificarea asta:
Cod: for(int j=1;j<i;j++) Exemplu daca ai deja generat : 1 3 5 atunci urmatorul element il vei alege ca fiind mai mare decat 5, nu le mai incerci si pe alea mai mici sau egale decat 5 pentru ca sigur nu vor fi bune. Analizeaza si alte surse, ca sa vezi diferite implementari. Titlul: Răspuns: 017 Combinari Scris de: hulparu adrian din Martie 11, 2008, 12:11:25 Mersi mult pentru sfaturi...am schimbat putin cck() si acum imi merge de 100... :peacefingers: :ok:
Titlul: Răspuns: 017 Combinari Scris de: Maria Stanciu din Martie 11, 2008, 19:14:11 Nu ar trebui ca backul iterativ sa fie mai eficient decat ce recursiv? Io iau 90 cu un back iterativ, si asta dupa ce am schimbat citirea si scrierea in fisiere, pt k luam doar 80 cu streamuri... :-k Ciudata si chestia asta... Imi poate spune si mie cineva cum as putea optimiza backul meu iterativ k sa iau 100?? eu luam 90 cu streamuri si back recursiv, cu citire in c iau 100 stiu ca sunt offtopic, dar de ieri la monitorul de evaluare nu mai pot sa vedea "solutiile mele" , de fiecare data trebuie sa ma uit la "toate solutiile", aveti idee de ce :)? Titlul: Răspuns: 017 Combinari Scris de: MciprianM din Martie 12, 2008, 12:03:41 Eu iau 100 cu streamuri si back recursiv. Fara functie de verificare. Cel mai lung test 2->160ms
restu in jur de 0; Titlul: Răspuns: 017 Combinari Scris de: Vladimir Oltean din Martie 15, 2008, 22:23:45 Am vazut ca in sursa ta tot faci verificarea asta: Cod: for(int j=1;j<i;j++) Exemplu daca ai deja generat : 1 3 5 atunci urmatorul element il vei alege ca fiind mai mare decat 5, nu le mai incerci si pe alea mai mici sau egale decat 5 pentru ca sigur nu vor fi bune. Analizeaza si alte surse, ca sa vezi diferite implementari. daca stiam chestia asta inainte de oji luam 130 de puncte si poate aveam si eu sanse... oricum buna sugestie :thumbup: Titlul: Răspuns: 017 Combinari Scris de: Capalna Tanase din Martie 19, 2008, 16:19:20 M-a necajit problema asta ](*,).
Tot am incercat sa o rezolv. Apoi cand am studiat sursa lui Cezar, care afisa la fel am vazut ca are 100 puncte. Daca am utilizat byte (din datele problemei se vede ca e destul) am luat 0 puncte. Daca am schimbat pe longint, am luat 100 puncte. E o eroare in evaluator, sau e bine de stiut pentru concursuri? Tase Titlul: Răspuns: 017 Combinari Scris de: Andrei Grigorean din Martie 19, 2008, 17:09:54 Tu compari s[k] cu s[k-1] la un moment dat. Dar vectorul s este de forma s[1..20]. De aici cred eu ca ti se trage eroare. Cand ai pus pe longint vad ca ai schimbat niste paranteze. Trimite ultima varianta pe byte in care modifici DOAR din byte in longint sa vedem cat iei. Ar trebui sa iei 0 puncte.
Titlul: Răspuns: 017 Combinari Scris de: tilimpea razvan nicolae din Martie 22, 2008, 14:30:07 Cod: program p1; Titlul: Răspuns: 017 Combinari Scris de: Pripoae Teodor Anton din Martie 22, 2008, 14:42:00 sincer m-i se pare ca o scandura :P (de curiozitate... ai auzit de indent? ) in rest pare bine :P
Titlul: Răspuns: 017 Combinari Scris de: tilimpea razvan nicolae din Martie 22, 2008, 15:09:08 nuj ce am de scriu as a da altfel ma incurc, culmea:)
Titlul: Răspuns: 017 Combinari Scris de: Farcasanu Alexandru Ciprian din Martie 31, 2008, 11:14:13 La "probleme care se pot rezolva cu generare de combinari" puteti adauga problema reteta.
Titlul: Răspuns: 017 Combinari Scris de: romi cher din Ianuarie 14, 2009, 09:54:21 Ma intereseaza daca ma poate ajuta cineva sa imi spuneti cu ce program se poate sa vad toate combinarile dintre doua numere. de exemplu combinatii de 4 luate cate 3 ar trebui sa-mi apara: a b c
a b d a c d b c d Avand in vedere ca combinari de 4 luate cate 3 sunt doar 4 variante e simplu, dar daca am numere mai mari, de ex. 12 cate 4 Multumesc Titlul: Răspuns: 017 Combinari Scris de: Florian Marcu din Ianuarie 14, 2009, 12:30:08 Pai vezi in arhiva educationala problema asta ( Combinari ). Vezi ca sursele trimise le poate vedea oricine. Cauta-ti un program de 100 puncte, si ala o sa-ti genereze combinari de n luate cate k. :ok:
Titlul: Răspuns: 017 Combinari Scris de: Cristi din Martie 15, 2009, 20:37:03 Cod: 1. #include<stdio.h> Editat de admin: Foloseste tagul "code" cand postezi cod. Titlul: Răspuns: 017 Combinari Scris de: Cristi din Martie 16, 2009, 21:36:10 m-am cam prins multumesc oricum :P
Titlul: Răspuns: 017 Combinari Scris de: A Cosmina - vechi din Iulie 22, 2009, 22:51:00 Asta nu se poate face cu next_permutatios si prev_permutation ? :?
Titlul: Răspuns: 017 Combinari Scris de: Codrea Marcel din Iulie 22, 2009, 23:30:13 Permutarile sunt diferite de combinari, deci nu prea le poti gasi cu next_permutation si prev_permutation. Dar intrebarea asta putea sa fie pusa si in topicul de permutari. Eu cred ca e util pentru elevi sa inteleaga ideea din spatele algoritmului, nu doar sa il apeleze.
Ca offtopic : STL va putea fi de acum folosit si la judeteana, eu l-as interzice la concursurile de liceu, indiferent de faza, pentru ca in opinia mea ideea nu e sa inveti cum sa folosesti o librarie de functii optim-implementate(asta se poate invata si la facultate), ci sa implementezi de mana algoritmii. Am fost si sunt un sustinator al introducerii gcc la toate fazele olimpiadelor, insa nu cred ca ar fi dificil sa se interzica apelarea STL-ului in surse si astfel sa se testeze capacitatea olimpicului de a proiecta structuri si a implementa de mana algoritmii care lucreaza cu ele. L.E.(Ca sa nu perpetuez un offtopic): Cred ca ai dreptate, wefgef, insa doar daca ne gandim la faza nationala si mai sus de atat. La faza locala sau judeteana nu putem vorbi de o majoritate de olimpici "cu pretentii", asa cum ai formulat si cred ca STL-ul va dauna. :D Titlul: Răspuns: 017 Combinari Scris de: Andrei Grigorean din Iulie 22, 2009, 23:42:59 Orice olimpic cu pretentii stie sa implementeze tot ceea ce foloseste din STL (cu mici exceptii, gen seturi). Olimpiada este un concurs in care accentul ar trebui sa se puna pe gasirea ideilor din spatele problemelor, nu pe implementarea unor algoritmi arhicunoscuti.
Intr-adevar, pentru elevii mai slabi care nu stiu sa scrie o cautare binara poate ca reprezinta un mare avantaj STL-ul, dar pentru olimpicii de top e vorba doar de a castiga timp la implementare - ceea ce mi se pare foarte in regula. E stupid ca intr-o proba de concurs de 5 ore sa stai sa scrii sortarea de mana de 3 ori. Sa implementezi niste algoritmi vechi de zeci de ani pe care toata lumea ii cunoaste nu ar trebui sa reprezinte scopul vreunui concurs, ca sa nu mai vorbim de olimpiada ;) Titlul: Răspuns: 017 Combinari Scris de: alexandru din Noiembrie 28, 2009, 18:27:04 Desi intrebarea o sa sune ciudat, de ce merge sursa http://infoarena.ro/job_detail/369554?action=view-source si asta nu http://infoarena.ro/job_detail/369556?action=view-source :-s .
Ambele il au pe k neinitializat. Titlul: Răspuns: 017 Combinari Scris de: Macarescu Sebastian din Aprilie 20, 2010, 16:24:11 Am si eu o intrebare daca se poate. Pe exemplul dat mie imi scrie in fisier urmatoarele: 1 2 3
Cod: 1 2 4 Total diferit de raspunsul din exemplu. Si totusi am luat 100 pt. Imi poate explica si mie cineva? Titlul: Răspuns: 017 Combinari Scris de: Vlad Eugen Dornescu din Aprilie 20, 2010, 16:45:26 Tu ai generat de fapt aranjamente in ordine lexicografica, nu combinari.
Tocmai am rulat sursa ta de 100 puncte si afiseaza ce trebuie :rotfl: Titlul: Răspuns: 017 Combinari Scris de: Macarescu Sebastian din Aprilie 21, 2010, 20:21:56 Bun dar tot nu inteleg de ce nu imi afiseaza ca in enunt.
Titlul: Răspuns: 017 Combinari Scris de: Simoiu Robert din Aprilie 21, 2010, 20:24:28 Eu am rulat sursa ta, si arata cum trebuie, probabil ai modificat ceva si ai uitat sa compilezi sau ... nu stiu :wink:
Titlul: Răspuns: 017 Combinari Scris de: Vlad Eugen Dornescu din 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 :wink: nu mai tot repeta ba ce zic altii, se numeste POST HUNTING si se sanctioneaza cu ban Titlul: Răspuns: 017 Combinari Scris de: Mircea Dima din Aprilie 21, 2010, 22:29:02 Permutarile sunt diferite de combinari, deci nu prea le poti gasi cu next_permutation si prev_permutation. Se poate folosind next_permutation ! uite sursa : http://infoarena.ro/job_detail/444889?action=view-source (http://infoarena.ro/job_detail/444889?action=view-source) Titlul: Răspuns: 017 Combinari Scris de: Macarescu Sebastian din 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.
Titlul: Răspuns: 017 Combinari Scris de: Barney din August 13, 2010, 00:42:38 Permutarile sunt diferite de combinari, deci nu prea le poti gasi cu next_permutation si prev_permutation. Se poate folosind next_permutation ! uite sursa : http://infoarena.ro/job_detail/444889?action=view-source (http://infoarena.ro/job_detail/444889?action=view-source) 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 Titlul: Răspuns: 017 Combinari Scris de: Ilie Ionut din 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. Titlul: Răspuns: 017 Combinari Scris de: Andrei Grigorean din August 13, 2010, 19:38:44 http://wordaligned.org/articles/next-permutation
Poti vedea cum e implementata functia in C++. Titlul: Răspuns: 017 Combinari Scris de: Barney din August 14, 2010, 01:14:03 ms frumos, nu prea stiam eu ce sunt permutarile. am cautat si acum inteleg. ms din nou
Titlul: Răspuns: 017 Combinari Scris de: Andrei Aldea din 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 :yahoo:
Titlul: Răspuns: 017 Combinari Scris de: Simoiu Robert din Martie 02, 2011, 15:33:19 Da, dupa cum poti vedea explicat aici (http://www.daniweb.com/forums/post312934.html#post312934).
Titlul: Răspuns: 017 Combinari Scris de: Florin eu din 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(). Cod:
Titlul: Răspuns: 017 Combinari Scris de: Sorin Rita din 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
Cod: if(valid(k)) Titlul: Răspuns: 017 Combinari Scris de: Florin eu din 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... :) Titlul: Răspuns: 017 Combinari Scris de: Mihai Visuian din 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 ... :( Titlul: Răspuns: 017 Combinari Scris de: Avramescu Cristian din Aprilie 14, 2013, 22:05:51 O problema destul de interesanta care se bazeaza pe combinari este Pluricex.
Titlul: N mai mare Scris de: Georgiana Arhip din 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... :-k
Titlul: Răspuns: 017 Combinari Scris de: Puscas Sergiu din 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. Titlul: Răspuns: 017 Combinari Scris de: Georgiana Arhip din Noiembrie 21, 2013, 17:31:11 multumesc ](*,) vad eu ce fac :aha:
|