Mesaj iniţiat de
andyxxl
Doi prieteni , Valentin si Valentina, au fiecare cate n abtibilduri cu inimioare.Fiecare abtibild are forma patrata si este impartit in patru patratele identice care contin inimioare,cel putin una si cel mult 9 in fiecare patratel.Cei doi prieteni isi propun ca pe felicitarea ce o vor darui impreuna invatatoarei lor , sa lipeasca abtibilduri cu multe inimioare.Locul de pe felicitare unde se pot lipi abtibildurile nu este de forma patrata si nu incap decat doua jumatatide abtibild lipite una langa alta. Astfel ,Valentina alege un singur abtibild din cele n care-i apartin,il taie in jumatate (fie pe orizontala fie pe verticala)iar apoi ,iar apoi din cele doua jumatati obtinute , alege una singura pentru a o lipi pe felicitare.
Dupa taiereape orizontala a unui abtibild jumatatea obtinuta se poate roti oricum si apoi se aseaza pe felicitare . In acelas timp , Valentin procedeaza la fel.Dupa lipirea pe felicitare a abtibildurilor taiate (cel al Valentinei primul si cel al lui valentin al doilea , sau invers)se pot observa 4 patratele alaturate in care sunt inimioare. Ei scriu sub fiecare patratel numarul inimioarelor desenate pe acestea si astfel se obtine un numar m ,de patru cifre (citit de la stanga la dreapta)
Ajutatii pe cei doi prieteni sa aleaga cate un abtibild , modul in care il va taia fiecare ,si pozitia in care il va lipi pe felicitare, astfel incat , dupa scrierea sub fiecare patratel a numarului de inimioare corespunzatoare , sa se obtina cel mai mare numar m , de patru cifre , posibil.
-------------
imi trebuie in pseudocod .... multumesc anticipat
Am considerat casutele timbrelor numerotate asa
--------
| 1 | 2 |
--------
| 4 | 3 |
--------
adica perechile de indecsi nu pot fi 1-3 sau 2-4 ... unde e explicat mai jos la conditie.
Cam asa vad eu problema:
input numarul n de timbre
initialize TimbreValentin
initialize timbrulcorect(TC),suma-intre-casutele-alaturate-corecte(S), Indexul casutei CMM(OK)(IICM), Indexul casutei UCMM(OK)(IIUCM)
for timbru=1 to n
initialize celmaimare (CMM), urmatorulcelmaimare (UCMM)
initialize indexulceluimaimare(ICM), indexulurmatoruluiceluimaimare(IUCM)
for contor = 1 to 4
initialize timbrul n casuta[contor] (1...4)
if CMM <= casuta[contor]
CMM=casuta[contor]
ICM=contor
else if uCM <= CMM and casuta[contor]=>UCMM
UCMM=casuta[contor]
IUCM=contor
endif
endfor
if ICM-IUCM=2 or ICM-IUCM=-2 //nu pot fi casutele 1-3 sau 2-4 ... trebuie casute alaturate
initialize contor2(1...4)
initialize I1=0, I2=0
for contor2=1 to contor2
if ICM!=contor2 and IUCM!=contor2
if I1=0
I1=contor2
else
I2=contor2
endif
endif
endfor
if casuta[I1]>casuta[I2]
UCMM=casuta[I1]
IUCM=I1
else
UCMM=casuta[I2]
IUCM=I2
endif
endif
if TC=0
S=CMM+UCM
TC=n
IICM=ICM
IIUCM=IUCM
else if S<CMM+UCMM
TC=n
IICM=ICM
IIUCM=IUCM
endif
endfor
rezultatul corect la TimbrulValentin -- Timbrul TC casutele IICM si IIUCM
repeta pentru TimbrulValentina
rezultatul corect la TimbruValentina -- Timbrul TC1 casutele IICM1 si IIUCM1
if TC[IICM]>TC1[IICM1]
m(rezultat final)=TC[IICM]*1000+TC[IIUCM]*100+TC1[IICM1]*10+TC1[IIUCM1]
else if TC[IICM]=TC1[IICM1]
if TC[IIUCM]>TC1[IIUCM1]
m(rezultat final)=TC[IICM]*1000+TC[IIUCM]*100+TC1[IICM1]*10+TC1[IIUCM1]
else
m(rezultat final)=TC1[IICM1]*1000+TC1[IIUCM1]*100+TC[IICM]*10+TC[IIUCM]
endif
else
m(rezultat final)=TC1[IICM1]*1000+TC1[IIUCM1]*100+TC[IICM]*10+TC[IIUCM]
endif