← Back to topics
Topic

*** mars ***

m
m@re_m@re
Ovaj zadatak sam slao 14 puta i bez izuzetaka uvek mi je na sedmom primeru pisalo pogresno resenje pa se pitam da li mogu da dobijem
TEST PRIMER BR.7
d
drakce
Koji mars je u pitanju?
Ako je mars sa BIH onda negde gresis jer meni su prosli svi test primeri iz prve.
m
m@re_m@re
Da u pitanju je BHIO
Ma znam ja de negde gresim ali nemam blage veze gde gresim

d
dimitar
(Po zakonu, svaki kafic mora postaviti svoje cijene tako da je moguce platiti kafu tacnim iznosom novcica, u suprotnom je kafa besplatna)

Ulaz
1 3
F 4

Izlaz
Q

Proveri dali u ovaj slucaj ti ispisuje Q, ja sam tako pogresio i mislim
da je bilo na 7 test
p
petko
Nije u pitanju Q! Proverio sam ja i Q je resenje SAMO 3. test primera
Verovatno je u pitanju neka glupa greska......
d
drakce
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.
t
tijanakg
A meni ne prolazi samo 3. test primer. Da li neko zna kako tachno on glasi?
b
boba5551
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.
m
m@re_m@re
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)
d
dimitar
Pa, ni je bas tako, tuku:

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;
m
m@re_m@re
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...
m
m@re_m@re
E GRESKA NIJE TAKO NEGO OVAKO

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;

end;
d
dimitar
Epa vidi ti imas gresku u tvom kodu
Probaj so mojot kod, ili sporedi gi pa ke uocis gde ti je gresku
t
tijanakg
Ja reshila, hvala.
Za Bobu: Odgovor je - Ko razume, shvatice.
b
boba5551
Ne shvatam. Šta ko razume shvatiæe?
m
m@re_m@re
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.
m
m@re_m@re
To je poslednja poslata verzija inace imalo je tu i raznih sortova i tako to ali mislim da sortovi nisu problem
b
boba5551
Kakvi su ovo ljudi danas, pa ne smes ni lepo da pitas, a da te neko ne kritikuje. Cak i ako das kompliment, ne budes dobar :-(
r
rajkon
Poenta teme nije prazan razgovor (idi na krstaricu:), vec da se choveku pomogne oko zadatka ...
d
dimitar
c:array [1..20] of char;
treba da bude od tip string (naravno, treba da prisposobis
citanje), evo kako sam ja to uradio:

for i:=1 to n do begin
c[i]:= '';
read (z);
while z <> ' ' do begin
c[i]:= c[i] + z;
read (z);
end;
readln (a[i]);
end;

isto promeni sve sto je integer u longint, i 30000 sa 100000
s
sidejan
Ma dobro je i da se muvaju (samo napred :) hehe) bar se nesto desava na ovom forumu ... bas je malo ljudi ukljuceno i interesuje se :( smrc smrc
m
m@re_m@re
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
m
m@re_m@re
JA BIH SAMO JOS JEDNOM ZAMOLIO ADMINA DA MI DA SEDMI TEST PRIMER OVOG ZADATKA
d
dimitar
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
d
dimitar
OK, to sa string ni je potrebno, znaci samo napravi pri citanje ovako:

for i:=1 to n do
readln(c[i], a[i]);

to je sve
m
m@re_m@re
Cekaj, cekaj, sta si tacno izmenio, samo unos podataka...
m
m@re_m@re
NE MOGU DA VERUJEM, UNOS PODATAKA MI NIJE BIO TACAN MA NEK SE NOSI U....ALO BOBO, NASTAVI BRATE STA SI KRENUO :D
a
adminModerator
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!

Pozdrav,
Z
b
boba5551
Rajko, zar i drug iz odeljenja da me kritikuje.
Sidejan, hvala na podrsci!!!