Zadatak je potpuno isti kao i Z-bankar, sa razlikom sto ovde imas stampu novcica. Da li stampas u odgovarajucem formatu? Trazi se resenje sa najvecom novcanicom kod vise resenja.
Nego Tijana, ja imam jedno zanimljivo pitanje za tebe. Zašto tako lepa devojka kao ti, toliko vremena provodi za tastaturom i monitorom??? Verovala ili ne, ali u poslednjoj reèenici se krije i odgovor na tvoje pitanje.
Ma naravno da stampam tako, ovo se razlikuje od z bankara jer tamo ima if optimum[i]>optimum[i-a[j]]+1 then optimum[i]:=optimum[i-a[j]]+1 a ovde je optimum[i]>=optimum[i-a[j]]+1 then optimum[i]:=optimum[i-a[j]]+1
(optimum[i] je najmanji broj novcica za isplacivanje sume od i Quakla)
if (optimum[i] > optimum[i-a[j]] + 1) or ((optimum[i] = optimum[i-a[j]] + 1) and (a[j] > a[c[i]])) then begin optimum[i]:= optimum[i-a[j]] + 1; c[i]:= j; end;
Ma imam to nego me mrzelo da kucam kod mene je u potpunosti ovako
for i:=1 to n do for j:=1 to m do if a[i]<=j then begin if optimum[i]>=optimum[i-a[j]]+1 then if optimum[i]=optimum[i-a[j]]+1 then begin if b[i]<j then b[i]:=j end else b[i]:=j optimum[i]:=optimum[i-a[j]] + 1 end;
Inace ja sortiram novcice tako da je dovoljno uporediti indexe, tako da ako malo bolje pogledas nema razlike zimedju toga sto si ti napisao i ovoga...
for i:=1 to m do for j:=1 to n do if a[j]<=i then if opt[i]>=opt[i-a[j]] + 1 then begin if opt[i]=opt[i-a[j]] + 1 then begin if b[i]<j then b[i]:=j end else b[i]:=j; opt[i]:=opt[i-a[j]] + 1;
Ja bih molio Bobu i Tijanu da se ne muvaju u mojoj temi otvorite svoju temu (ili ako vam je bas toliko milo ja cu da vam otvorim) pa se tamo intimizirajte :/
Za dimitra Ma bre i tako sam otkucao kao i ti i opet nece evo ceo moj kod pa ako te ne mrzi pogledaj
var opt, b, d:array [0..15000] of integer; a:array [1..20] of integer; c:array [1..20] of char; l, n, m, i, j, p:integer; s:string[10]; z:char; * * begin _ readln(n, m); __ for i:=1 to n do begin ___ readln(s); ___c[i]:=s[1]; ___ a[i]:=0; ___ for j:=3 to length(s) do a[i]:=10*a[i]+(ord(s[j])-48) __ end; * _ for i:=0 to 15000 do b[i]:=0;
_ for i:=1 to 15000 do opt[i]:=30000; _opt[0]:=0;
_for i:=1 to m do __ for j:=1 to n do ___ if a[j]<=i then ____ if (opt[i]>opt[i-a[j]] + 1) or ____ ((opt[i]=opt[i-a[j]] + 1) and (a[b[i]]<a[j])) ____ then begin _____ opt[i]:=opt[i-a[j]] + 1; _____ b[i]:=j * ___ end; * _ if opt[m]=30000 then writeln('Q') _ else begin __ l:=m; __for i:=opt[m] downto 1 do begin ___ write(c[b[l]]); ___ l:=l-a[b[l]]; __ end; _ end; end.
Ne mislim da je od presudne vaznosti da li su mi oznake string ili je to niz charova uostalom, a i ono za 100000, iako je 30000 opet je dovoljno ne moze da se stigne
pa ne znam, ja sam sve to smenio u tvom programu, i on je proradio na svi testovi. Izgleda da ovo u zadatku ni je tacno: Svaki red pocinje sa jednim velikim ili malim slovom engleske abecede koje predstavlja simbol za odgovarajuci novcic u toj zajednici
Izvini sto nisam poslao test primer, ali sam bio stvarno prezauzet.. i josh uvek sam... Uostalom, mislim da si izvukao veliku poentu iz svega ovoga, .. ma koliko mala i glupa bila greska!