Pagini: 1 2 3 [4] 5   În jos
  Imprimă  
Ajutor Subiect: 027 Loto  (Citit de 46945 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #75 : Noiembrie 15, 2008, 20:06:07 »

Evaluatorul este oprit momentan Very Happy
Memorat
venom4u31
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 8



Vezi Profilul
« Răspunde #76 : Noiembrie 15, 2008, 20:15:04 »

Sper ca nu pentru mult Cry
Memorat
Alin1771
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #77 : Februarie 25, 2009, 03:33:42 »

rezolvarea mea este urmatoarea:
Cod:
var
s,p:longint;
k,j,i,n:integer;
x,l:array[1..100] of integer;
f,g:text;
begin
assign(f,'loto.in');reset(f);
assign(g,'loto.out');rewrite(g);
read(f,n,s);   readln(f);
for k:=1 to n do read(f,l[k]);
for k:=1 to 6 do x[k]:=l[1];
k:=0;
j:=6;
p:=x[k]*6;
while (p<>s) and (j>0) do begin
p:=0;
inc(k);
x[j]:=l[k];
   for i:=1 to 6 do p:=p+x[i];
if k=n then begin k:=1;j:=j-1;end;
end;
if p<>s then write(g,-1) else write(g,x[1],' ',x[2],' ',x[3],' ',x[4],' ',x[5],' ',x[6]);
close(f);
close(g);
end.
imi poate spune si mie cineva de ce primesc zero puncte pe ea? Thumb down

[edit] Foloseste tag-ul "code" cand postezi cod.
« Ultima modificare: Februarie 25, 2009, 07:59:20 de către Sima Cotizo » Memorat
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #78 : Februarie 25, 2009, 08:00:30 »

Sursa ta imi pare destul de greu de inteles (nu are nici macar niste comentarii). Daca ne-ai spune cum ai gandit tu rezolvarea te-am putea ajuta mult mai usor!
Memorat
Alin1771
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #79 : Februarie 25, 2009, 16:19:27 »

Cod:
....
for k:=1 to n do read(f,l[k]); {introduc in vectorul L numerele date de Loteria Nationala}
for k:=1 to 6 do x[k]:=l[1];{introduc in vectorul x pe toate pozitiile primul numar dat de loteria nationala}
k:=0;
j:=6;
p:=x[k]*6; {echivalent cu for k:=1 to 6 do p:=p+x[k],dar toate elementele din vector sunt egale}

{aici e un fel de backtracking}
while (p<>s) and (j>0) do begin {cat timp p > s sau < s si avem element precedent in vectorul x DO; valoarea lui j indica pozitia in vectorul x pe care sunt facute urmatoarele modificari:}
p:=0;
inc(k);
x[j]:=l[k];
for i:=1 to 6 do p:=p+x[i];{verificam pe pozitia j din vectorul x toate numerele date de loteria nationala pana cand p=s (avem deja numerele castigatoare) sau k=n (am verificat toate numerele date de loteria nationala). p este suma numerelor alese pentru biletul lui Gigel}
if k=n then begin k:=1;j:=j-1;end; {cand am terminat verificarea tuturor numerelor date de loteria nationala pe pozitia j din vectorul x coboram un nivel in vector si atribui la k valoarea 1 intrucat zero nu are sens, x[j] are deja valoarea l[k+1] data la inceput; (k+1 intrucat avem inc(k) inaintea egalarii)}
end; {Daca nu se poate obtine un bilet castigator structura repetitiva se va opri cand j=0 altfel, se va opri cand p=s}
if p<>s then write(g,-1) else write(g,x[1],' ',x[2],' ',x[3],' ',x[4],' ',x[5],' ',x[6]); {aici nu mai e cazul sa explic}
....
sper ca se intelege acum ce am facut, nu ma pricep prea bine sa exprim in cuvinte modul in care gandesc
[editat de moderator] foloseste tagul code cand vrei sa postezi cod sursa.
« Ultima modificare: Februarie 25, 2009, 17:30:08 de către Sima Cotizo » Memorat
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #80 : Februarie 25, 2009, 17:39:24 »

Pai o observatie:
Cod:
k:=0;
p:=x[k]*6; {echivalent cu for k:=1 to 6 do p:=p+x[k],dar toate elementele din vector sunt egale}
x[ 0 ] nu exista de fapt (uita-te la cum ai declarat). Ar trebui sa ai ori k:=1 ori p:=x[ 1 ]*6.

In rest backtrackingul tau mi se pare gresit, desi e foarte probabil sa nu-l fi inteles eu. Eu unul as folosi o procedura recursiva (o poti scrie tu iterativ daca doresti; mentionez ca nu ma simt in largul meu in pascal):
Cod:
procedure back( nivel:integer );
begin
if ( nivel==7 )
if ( sol==suma_de_la_1_la_6_in_x ) then afisez_solutia;
else
for i:=1 to n do
if ( Utilizat[i]=0 ) then begin
x[nivel]:=l[i]
Utilizat[i]:=1;
back( nivel+1 );
Utilizat[i] := 0;
end;
end;
Vectorul Utilizat[] imi zice daca un numar l-am mai folosit sau nu. "afisez_solutia" si "suma_de_la..." le implementezi tu mai pe larg Wink

Totusi, nu cred ca un back e solutia buna Smile mai citeste si pe topicul problemei poate prinzi si alte idei de rezolvare Wink
Memorat
ooctav
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 15



Vezi Profilul
« Răspunde #81 : Februarie 28, 2009, 00:02:35 »

iau WA pe testele 7,11,13,14,15,16,18 ... imi poate da un hint cineva care cunoaste testele ?
Memorat
c_e_manu
Nu mai tace
*****

Karma: 56
Deconectat Deconectat

Mesaje: 243



Vezi Profilul
« Răspunde #82 : Februarie 28, 2009, 17:16:35 »

descrie putin metoda ta de rezolvare Smile
Memorat
ooctav
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 15



Vezi Profilul
« Răspunde #83 : Martie 03, 2009, 14:07:56 »

stie cineva testul 7 ?
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #84 : Martie 04, 2009, 10:50:51 »

Testele nu sunt publice.
Memorat
lsorin_94
Strain


Karma: -8
Deconectat Deconectat

Mesaje: 23



Vezi Profilul
« Răspunde #85 : Martie 28, 2009, 19:17:06 »

ce tip de fis e CPP-ul??
Memorat
madlex
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« Răspunde #86 : Iunie 03, 2009, 12:39:51 »

check comments
Memorat
ucc_5
Client obisnuit
**

Karma: -11
Deconectat Deconectat

Mesaje: 82



Vezi Profilul
« Răspunde #87 : August 05, 2009, 12:36:45 »

Ce chestie quicksortul meu e de 10 ori mai incet decat sortul din stl. M-am chinuit 2 ore cu sorturi si m-am lasat pagubas, l-am lasat pe cel din stl. Voi ce algoritm de sortare ati folosit ?
Memorat
Pepelea_Flaviu
Client obisnuit
**

Karma: 30
Deconectat Deconectat

Mesaje: 98



Vezi Profilul
« Răspunde #88 : August 05, 2009, 13:21:29 »

Merge foarte bine cu heapsort  Ok
Memorat
zloteanu.adrian
Strain
*

Karma: -9
Deconectat Deconectat

Mesaje: 38



Vezi Profilul
« Răspunde #89 : Septembrie 10, 2009, 13:28:12 »

Nu inteleg unde se blocheaza.. nu poate fi decat de la sortare:
Cod:
#include<fstream>
#include<algorithm>
using namespace std;
...
int cmp(int a,int b)
{return a<b;}
int main()
...
sort(v2+1,v2+f+1,cmp);
...
return 0;}
http://infoarena.ro/job_detail/346850
Any ideas?
Memorat
xtreme
De-al casei
***

Karma: -26
Deconectat Deconectat

Mesaje: 118



Vezi Profilul
« Răspunde #90 : Septembrie 10, 2009, 16:22:04 »

In cazul in care elementele din vectorul v2 incep de pe pozitia 1 si se termina pe pozitia f si vrei sa sortezi crescator nimic nu e gresit, iar v2 trebuie sa fie de tipul int.S-ar putea ca algoritmul tau sa nu fie optim sau sa fie optim si sa se blocheze in alta parte a codului.
Daca vrei sa te lamuresti mai bine http://www.cplusplus.com/reference/algorithm/sort/.
Memorat
benny
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 8



Vezi Profilul
« Răspunde #91 : Noiembrie 22, 2009, 19:59:57 »

Stie cineva ce am gresit in sursa urm. de imi da 0 pct.? Am verificat prg. si la mn ruleaza corect si totusi imi da 0 pct.
Cod:
program loto;
uses crt;
var n,i:byte;
    sp:longint;
    g:boolean;
    v,sol:array[1..100]of longint;
procedure ext(i:byte;s:longint);
var x,l:byte;
begin
     if (s=sp)or(i=7)then
        begin
             if (s=sp)and(i=7) then
                g:=true;
        end
     else
          for x:=1 to n do
           if not g then
            if s+v[x]<=sp then
               begin
                    sol[i]:=v[x];
                    ext(i+1,s+v[x]);
               end;
end;
begin
     readln(n);
     readln(sp);
     for i:=1 to n do
         readln(v[i]);
     g:=false;
      ext(1,0);
     if g then
        for i:=1 to 6 do
            write(sol[i],' ')
        else
            writeln(-1);
     readln;
end.
« Ultima modificare: Noiembrie 22, 2009, 20:44:46 de către Savin Tiberiu » Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #92 : Noiembrie 22, 2009, 20:06:25 »

Foloseste tag-ul [ code ] (fara spatii) cand postezi surse.

La problema aceasta poti vedea sursele trimise de ceilalti, ia o sursa de 100 de puncte si incearca la tine pe calculator pe un test sa vezi cat ar trebui sa dea.
Memorat
benny
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 8



Vezi Profilul
« Răspunde #93 : Noiembrie 22, 2009, 20:44:50 »

Cum as putea sa verific timpul in care se ruleaza un prg.?
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #94 : Noiembrie 22, 2009, 22:05:21 »

Daca ai linux folosesti functia time din bash. Pt windows folosesti time.h si clock_t. Parca era ceva de genul :

Cod:
#include <stdio.h>
#include <time.h>
int main () {
    clock_t start, finish;
    start = clock();
    ...
    finish = clock();
    printf("%.3lf\n", (finish - start) / CLOCKS_PER_SEC);
}
Memorat
benny
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 8



Vezi Profilul
« Răspunde #95 : Noiembrie 22, 2009, 23:02:55 »

Ms teodor
Memorat
vladtarniceru
De-al casei
***

Karma: 81
Deconectat Deconectat

Mesaje: 145



Vezi Profilul
« Răspunde #96 : August 20, 2010, 19:42:46 »

eu am facut in (n^3)*2+(n^2)+2_sorturi_din_STL,unul_care_sorteaza_n_elem, altul_care_sorteaza_n^3 si am luat 100, dar se poate face mai rapid de atat ?  Eh?

ps: cred ca este mai rapid totusi cu operatii pe biti si sume partiale

multumesc Very Happy
Memorat
sima_cotizo
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« Răspunde #97 : August 20, 2010, 20:45:33 »

Din cate tin minte, mai jos de O(n3) nu se poate (sortare cu radix?), insa o solutie ok este si O(n3log n3)...

Acum sa mi se ierte postul in eventualitatea in care e gresit Smile

PS: My bad am mancat o putere Very Happy
« Ultima modificare: August 20, 2010, 21:36:33 de către Sima Cotizo » Memorat
blasterz
Nu mai tace
*****

Karma: 92
Deconectat Deconectat

Mesaje: 255



Vezi Profilul
« Răspunde #98 : August 20, 2010, 21:16:16 »

eu am facut in (n^3)*2+(n^2)+2_sorturi_din_STL,unul_care_sorteaza_n_elem, altul_care_sorteaza_n^3 si am luat 100, dar se poate face mai rapid de atat ?  Eh?

ps: cred ca este mai rapid totusi cu operatii pe biti si sume partiale

multumesc Very Happy


Tu ai O(n^3 log (n^3))

Se poate optim in O(n^3) cu hashing
Memorat
vladtarniceru
De-al casei
***

Karma: 81
Deconectat Deconectat

Mesaje: 145



Vezi Profilul
« Răspunde #99 : August 21, 2010, 09:42:36 »

multumesc mult, dar pana la urma, solutia cu hashing se face la fel, doar ca in loc de cautare binara faci "Search" (cu hashing)? Confused
Memorat
Pagini: 1 2 3 [4] 5   În sus
  Imprimă  
 
Schimbă forumul:  

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