Pagini: 1 2 3 [4] 5 6 ... 9   În jos
  Imprimă  
Ajutor Subiect: 002 Jocul Flip  (Citit de 85887 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
Adix
Strain
*

Karma: -9
Deconectat Deconectat

Mesaje: 44



Vezi Profilul
« Răspunde #75 : Martie 01, 2007, 21:23:30 »

A mea ar solutiona cu succes datele alea de intrare Smile.
O solutioneaza ?  .. daca da incearca si asta ..

Cod:
3 3
2 -3 3
4 0 -5
3 20 7

Ar trebui sa iti afiseze 35 dar raspunsul corect e 37.Daca iti da 37 incearca sa faci transpusa matricii asteia si vezi ce rezultat iti da Tongue . Daca tot 37 iti da inseamna ca exemplul meu nu e bun  Embarassed
Memorat
smith_s9
Strain


Karma: -6
Deconectat Deconectat

Mesaje: 7



Vezi Profilul
« Răspunde #76 : Martie 01, 2007, 21:50:44 »

Ufff... da... da 35. De ce, nu stiu. Oricum, am incercat sa fac pe foaie problema. Uite cum am mers:

Flip la a doua linie.
Cod:
2 -3 3
-4 0 5
3 20 7

Flip la prima coloana.
Cod:
-2 -3 3
4 0 5
-3 20 7

Flip la prima linie.
Cod:
2 3 -3
4 0 5
-3 20 7

Care da 35. Nu vad cum as putea obtine 37 Embarassed...
Memorat
Adix
Strain
*

Karma: -9
Deconectat Deconectat

Mesaje: 44



Vezi Profilul
« Răspunde #77 : Martie 01, 2007, 22:01:29 »

of scuze .. greseala mea .. vroiam sa zic ca s-ar putea sa iti arate 33 si raspunsul corect e 35 nu eram atent cand am scris postul .. se pare ca nu e exemplul meu bun.. scuze de deranj Tongue
Memorat
smith_s9
Strain


Karma: -6
Deconectat Deconectat

Mesaje: 7



Vezi Profilul
« Răspunde #78 : Martie 01, 2007, 22:22:43 »

Ufff... scuze si eu de deranj, am facut niste greseli si imi dadea 35 din greseala. Totusi erau greseli in flip.in. Embarassed Da, imi da 33 si vad acum unde e greseala. Totusi, nu ma las pana nu o rezolv fara backtracking. Scuze din nou, iar am fost neatent, ca de obicei Embarassed.
Memorat
Adix
Strain
*

Karma: -9
Deconectat Deconectat

Mesaje: 44



Vezi Profilul
« Răspunde #79 : Martie 01, 2007, 22:31:47 »

Totusi, nu ma las pana nu o rezolv fara backtracking. Embarassed.

Daca reusesti de 100 vreau si eu sursa : wink Very Happy
Memorat
IronWing
Strain


Karma: -2
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #80 : Martie 07, 2007, 19:42:37 »

M-am chinuit ceva timp sa rezolv aceasta problema. O prima idee ar fi sa generezi toate combinatiile in care poti inmulti liniile cu -1 sau 1 ( inmultirea cu 1 se face inmultind de 2 ori cu -1). Apoi, dupa fiecare combinatie generata sa verifici fiecare coloana daca suma sa negativa si daca da sa ii faci flip.
O problema ajutatoare ar fi generarea tuturor combinatiilor de 0 si 1 de lungime n.

Cod:
...

[Editat de moderator: nu mai posta cod asa explicit. Cei care stiu cum se genereaza se descurca sa implementeze singuri. Poti da indicii sau sa explici cum se genereaza daca chiar vrei]
« Ultima modificare: Martie 08, 2007, 09:26:24 de către Valentin Stanciu » Memorat
razyelx
Client obisnuit
**

Karma: 0
Deconectat Deconectat

Mesaje: 82



Vezi Profilul
« Răspunde #81 : Aprilie 02, 2007, 20:47:09 »

nu am citit pe aici pre multe postu-ri numa primele.. as vrea sa stiu fara backtracking nu se poate? Tongue
Memorat
Bluedrop_demon
Client obisnuit
**

Karma: -3
Deconectat Deconectat

Mesaje: 66



Vezi Profilul
« Răspunde #82 : Aprilie 02, 2007, 20:51:20 »

Daca permite evalutaorul marimea sursei, poti face cu precompilare. Generezi toate combinatiile de 1 si 0 de lungime 16 si apoi verifici pentru un n dat.

Dar backtracking-ul se comporta exemplar, si te-as sfatui sa nu te complici cand nu e necesar!  Ok
Memorat
razyelx
Client obisnuit
**

Karma: 0
Deconectat Deconectat

Mesaje: 82



Vezi Profilul
« Răspunde #83 : Aprilie 02, 2007, 21:27:33 »

eu mi-am format un algoritm pe care iau numa 30  de pct. suna cam asa... Fac suma elementele de pe coloane daca e sub 0 inmultesc coloana cu -1 la fel si cu randurile... pt exemplu merge  Applause. smecher nu? as dori sa imi spuneti care e bugg-ul in gandirea mea? adik am eu cateva indei dar... nu sunt sigur..
Memorat
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #84 : Aprilie 02, 2007, 21:35:18 »

Ce faci tu e un greedy... O sa iti zic ce a zis si Greco in alt thread, "nu intreba ce e gresit, mai bine demonstreaza de ce e bine!"... in general greedy-ul buseste... aici din cate imi aduc aminte e un back + o dinamica : o dinamica iti face intotdeauna solutia optima (daca e corecta Tongue ) iar backul verifica toate variantele... in schimb cu greedy speculezi...
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #85 : Aprilie 02, 2007, 21:52:01 »

Citat
smecher nu?

Nu e nimik smcher in ce ai gandit tu Wink). Daca te uitai pe posturile anterioare ai fi vazut ca s-au mai gandit mai multi la ideea asta si au trebuit sa renunte ptr ca NU este o solutie corecta. Ce faci u e 100% greedy, si cum a zis si sima cotizo acesta nu este corect. Daca postezi pe forum o demonstratie matematica corecta la greedyu tau eu promit ca iti voi gasi bugul in asa fel incat as iei 100 Wink
Memorat
Omega91
Strain
*

Karma: 0
Deconectat Deconectat

Mesaje: 36



Vezi Profilul
« Răspunde #86 : Aprilie 19, 2007, 11:54:19 »

eu mi-am format un algoritm pe care iau numa 30  de pct. suna cam asa... Fac suma elementele de pe coloane daca e sub 0 inmultesc coloana cu -1 la fel si cu randurile.

Recunosc, asta este prima rezolvare care mi-a venit in minte. Dar am 2 exemple care nu merg cu metoda asta:

  5   -1    5  5 5
  5   -1    5  5 5
-1  100 -1  -1 -1
  5   -1    5  5  5
  5   -1    5  5  5
se comuta linia 3 si coloana 2.

-1 10 10 10
-1 10 10 10
100 -1 -1 -1
-1 10 10 10
200 -1 -1 -1
-1 10 10 10
aici sunt liniile 3 si 5 si coloana 1.

ma rog, in exemplele astea, toate elementele devin in final pozitive, dar nu-i obligatoriu.
Memorat
C11H17NO3
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #87 : Mai 07, 2007, 22:58:35 »

OK, dupa ceva incercari 30, 70, 90, 100.
Nu am facut cu backtracking, desi e clar ca asa ar fi cel mai bine.
Am facut un soi de greedy cu perturbari random - deci un algoritm probabilist.
Adica, incerc sa maresc maximal suma pe principiile de bun-simt, pe linie si coloana - cand chestia se poate, flip. In caz ca nu se poate mari suma, atunci coafez matricea pseudoaleator de cateva ori si continui cautarea.
Cea mai interesanta chestie la solutia mea cred ca este faptul ca merge Smile. Tehnic vorbind, cred ca este asemanatoare cu random-restart steepest ascent hill-climbing: http://en.wikipedia.org/wiki/Hill_climbing doar ca nu face random-restart, ci random-sidestepping, random-jiggle, sau cam asa ceva. Oricum, traiasca si-nmulteasca(-se) random seed-ul de pe masina de evaluare Wink.

O sa incerc acum si cu backtracking si... mai am o idee Smile.

Alin

« Ultima modificare: Mai 07, 2007, 23:19:57 de către Mesc Alin » Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #88 : Mai 08, 2007, 09:32:08 »

Nu este deloc greu sa implementezi un back la problema asta Wink.

Pana atunci, long live ciucuielile!
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
C11H17NO3
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #89 : Mai 08, 2007, 20:53:55 »

Tocmai, nu e deloc greu cu back Smile De aia ma gandeam la ceva mai interesant, in masura in care se va putea.

Alin
Memorat
c_sebi
Client obisnuit
**

Karma: 24
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #90 : Iunie 03, 2007, 16:58:23 »

am o intrebare, desi e offtopic...

am facut declaratia
Cod:
long long  int SMax=-32000000000;

si la compilare obtin eroarea

Cod:
user.cpp:4: error: integer constant is too large for 'long' type
  Shocked

ma poate lamuri cineva pls?
Memorat
crawler
Vorbaret
****

Karma: 105
Deconectat Deconectat

Mesaje: 161



Vezi Profilul
« Răspunde #91 : Iunie 03, 2007, 17:19:55 »

ai putea sa incerci

Cod:
long long  int SMax=-3200000*10000;
Memorat
cos_min
Nu mai tace
*****

Karma: 48
Deconectat Deconectat

Mesaje: 493


live


Vezi Profilul
« Răspunde #92 : Iunie 03, 2007, 17:20:47 »

Incearca :
long long  int SMax=-32000000000LL;
Memorat

vid...
c_sebi
Client obisnuit
**

Karma: 24
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #93 : Iunie 03, 2007, 17:38:20 »

au mers ambele varinate pe care mi le-ai recomandat... ms de ajutor...  Ok
dar poate imi explica cineva care era problema...
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #94 : Iunie 03, 2007, 17:49:12 »

Problema era ca nu poti atribui direct unei variabile un numar mai mare de 32 biti  Thumb up
Memorat
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« Răspunde #95 : Iunie 03, 2007, 23:55:52 »

Daca nu pui LL la sfarsit compilatorul presupune ca este int dar -32000000000 nu se incadreaza in timpul int.
LL la sfarsit semnifica faptul ca este vorba de o constanta long long.
Memorat
frEak-
Strain


Karma: -8
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #96 : Iulie 03, 2007, 19:52:26 »

Citat
O((2^m) * n)

ce inseamna O ala ? ;D
sa nu mor prost nu de alta  Giggidy, giggidy, gig-gi-dy!

(nu e offtopic ca a montionat cineva chestia asta acu vreo 70 de posturi xD)
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #97 : Iulie 03, 2007, 20:35:35 »

Constanta Tongue. acel 2^m*n reprezinta un numar de operatii destul de orientativ.
Memorat
stef2n
Nu mai tace
*****

Karma: 218
Deconectat Deconectat

Mesaje: 641



Vezi Profilul
« Răspunde #98 : Iulie 03, 2007, 20:47:41 »

Constanta? Raised eyebrow Notatia O este pentru o functie ce exprima dependenta ordinului de crestere al timpului/memoriei in raport cu variabilele date.
« Ultima modificare: Iulie 03, 2007, 21:20:39 de către Stefan Istrate » Memorat

Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
Bogdan_tmm
De-al casei
***

Karma: 4
Deconectat Deconectat

Mesaje: 122



Vezi Profilul
« Răspunde #99 : Ianuarie 06, 2008, 12:38:57 »

Eu nu am incercat prin backtraking.In fine solutia mea nu e foarte reusita dar nu asta ar fi problema cea mai mare.Ci  faptul ca in flip.out imi scrie de 3 ori solutia .Ex: dak solutia este 24 in flip.out imi va scrie 242424.Cine stie de ce Sad(.Si sa nu credeti ca am scris de mai mule ori in fisier.Am o singura --fprintf(g,"%ld",.....);
In locul ... este variabila;
Memorat
Pagini: 1 2 3 [4] 5 6 ... 9   În sus
  Imprimă  
 
Schimbă forumul:  

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