|
Titlul: 011 Generare de permutari Scris de: Filip Cristian Buruiana din Februarie 27, 2008, 20:26:50 Aici puteţi discuta despre problema Generare de permutari (http://infoarena.ro/problema/permutari).
Titlul: Răspuns: 011 Generare de permutari Scris de: Bozianu Ana din Februarie 27, 2008, 21:53:48 O idee alternativa este generarea iterativa.
O scurta descriere : Fie p[1],p[2],...p[n] o permutare data. 1. Se cauta din coada prima pozitie de crestere adica adica p[ i ]<p[ i+1 ] ( 1<= i < n ) i=maxim 2. Se cauta din coada prima pozitie j pentru care in care p[ j ] > p[ i ] . 3. Se schimba intre ele elementele din pozitiile i si j . 4. Se reverseaza secventa i+1 -> n. Astfel se genereaza permutarea urmatoare in ordine lexicografica Titlul: Răspuns: 011 Generare de permutari Scris de: Mircea Pasoi din Februarie 27, 2008, 22:09:20 Ceva asemanator face si next_permutation in STL. Cred ca ar trebuie mentionata si solutia asta in indicatii. O alta posibilitate mai e sa iei fiecare numar de la 1 la N! si sa determine ce permutare reprezinta.
Titlul: Răspuns: 011 Generare de permutari Scris de: Bozianu Ana din Februarie 27, 2008, 22:25:22 Dap. Scazand factoriale in ordine descrescatoare.
Titlul: Răspuns: 011 Generare de permutari Scris de: Adrian Diaconu din Februarie 27, 2008, 22:33:07 Trebuia mentionata si solutia cu dancing links.
Titlul: Răspuns: 011 Generare de permutari Scris de: Filip Cristian Buruiana din Februarie 27, 2008, 22:36:30 Cred ca cel mai bine cand vine cineva cu o solutie noua e sa adauge el la indicatii de rezolvare, asa e greu sa te gandesti din prima la toate solutiile :roll:. Adica problemele pot fi modificate si pe parcurs, dupa ce ies la rampa. In plus, daca mai stiti probleme similare care folosesc algoritmii prezentati, completati ca sa obtinem o lista cat mai buna.
Titlul: Răspuns: 011 Generare de permutari Scris de: Bogdan-Cristian Tataroiu din Februarie 28, 2008, 09:24:37 Cred ca cel mai bine cand vine cineva cu o solutie noua e sa adauge el la indicatii de rezolvare, asa e greu sa te gandesti din prima la toate solutiile :roll:. Adica problemele pot fi modificate si pe parcurs, dupa ce ies la rampa. In plus, daca mai stiti probleme similare care folosesc algoritmii prezentati, completati ca sa obtinem o lista cat mai buna. Nu trebuie sa fii decat admin :P Se poate face o noua pagina /problema/nume/indicatii care sa fie editabila de oricine si inclusa in problema. Titlul: Răspuns: 011 Generare de permutari Scris de: Vladimir Oltean din Martie 02, 2008, 12:28:59 Am postat solutia folosind si backtracking, si generarea permutarii urmatoare, dar totusi imi iese din timp la ultimul test. de ce? :fool:
Titlul: Răspuns: 011 Generare de permutari Scris de: Bunau Florin din Martie 02, 2008, 12:38:24 @vlad_oltean
Fa scrierea si citirea in C, si scrie functia afis() inline. Titlul: Răspuns: 011 Generare de permutari Scris de: Vladimir Oltean din Martie 02, 2008, 14:57:22 Fa scrierea si citirea in C, si scrie functia afis() inline. multumesc pentru sfat, am modificat si am luat si eu suta :thumbup: dar oricum, de ce stdio merge mai repede decat fstream?? :-s Titlul: Răspuns: 011 Generare de permutari Scris de: Bunau Florin din Martie 02, 2008, 17:52:35 sorry mods, nu e chiar ontopic
@vlad_oltean Actualy nu e stdin si fstream :P astea sunt headere, care contin definitiile functiilor de citire. Nu intodeuna citirile in C sunt mai rapide decat cele in C++. Toate depind de implementarea lor data de compilator. Depinde de ce flaguri de compilare folosesti, depinde de ce optimizari mai ai in cod etc.. Sa nu repet familia de functii de citire in C si C++, am sa ma refer la scanf si cin. Nu poti zice cu siguranta ca "scanf" e mai rapida decat "cin" sa zicem. Oricum in cazul asta si in majoritatea cazurilor unde folosesti direct functiile, diferenta de viteza e in fravoarea scanf clar. Provine de la faptul ca cin e un obiect de tip istream, care trebuie construit, distrus, manipulat, e mare.. in fine.. e un obiect si se misca mai greu (object overhead). Bineinteles cum se misca de optimizarile compilatorului. "scanf" nu foloseste obiecte ci e o functie caruia ii dai un pattern de citire si niste pointeri, acesul in memorie se face mai rapid in cazul asta. Niste linkuri pe tema asta: http://forums.topcoder.com/?module=Thread&threadID=508058&start=0&mc=7 http://www.cplusplus.com/reference/iostream/ Ah si discutia prea funny in care brahle e cam owned pe subiectul asta :) http://www.daniweb.com/forums/thread40450.html Titlul: Răspuns: 011 Generare de permutari Scris de: Cosmin Negruseri din Martie 03, 2008, 00:54:30 Ar merge un articol in care se discuta chestiile astea.
Titlul: Răspuns: 011 Generare de permutari Scris de: Chibici Tiberiu din Aprilie 17, 2009, 09:03:20 Am facut problema cu next_permutation din STL. Cu streamuri (pe calcul meu) compilatorul MinGW spunea ca executia a durat 0.5 secunde, cu stdio doar 0.2 secunde.
Titlul: ifstream si ofstream mai rapide decat freopen Scris de: Soucup Nicolae Silviu din Noiembrie 27, 2012, 08:14:55 Cu ifstream si ofstream (68ms testul 5 pentru N=8) merge mai repede decat cu freopen (80ms testul 5 pentru N=8)
Titlul: Răspuns: 011 Generare de permutari Scris de: George Popoiu din Noiembrie 27, 2012, 08:54:03 WOOW ! :shock: Pe bune ?!?
Titlul: Răspuns: 011 Generare de permutari Scris de: CHIRILA ADRIAN din Noiembrie 10, 2013, 16:49:09 Ce complexitate are functia next_permutation? O(1)?
Titlul: Răspuns: 011 Generare de permutari Scris de: Rares Cheseli din Noiembrie 10, 2013, 18:05:49 http://www.cplusplus.com/reference/algorithm/next_permutation/
Titlul: Răspuns: 011 Generare de permutari Scris de: Puscas Sergiu din Noiembrie 10, 2013, 18:06:09 "Up to linear in half the distance between first and last (in terms of actual swaps)." (http://www.cplusplus.com/reference/algorithm/next_permutation/ (http://www.cplusplus.com/reference/algorithm/next_permutation/))
Deci O(N/2), care poate fi aproximat la O(1) (pentru N <=8). Titlul: Răspuns: 011 Generare de permutari Scris de: Stefan din Mai 09, 2018, 15:04:45 https://infoarena.ro/job_detail/2202619?action=view-source
80 puncte, fail pe ultimul test. Any ideas? :) |