Documente Academic
Documente Profesional
Documente Cultură
1 Probl Greedy Lista
1 Probl Greedy Lista
12 30 16 30
15 0 18 0
10 0 18 30
18 0 20 45
12 15 13 0
Solutie
P1. Ordonm spectacolele cresctor dup ora terminrii lor.
P2. Selectm initial primul spectacol (deci cel care se termin cel mai devreme).
P3. Selectm primul spectacol neselectat, care nu se suprapune cu cele deja selectate (deci cel
care ncepe dup ce s-a terminat ultimul spectacol selectat)
P4. Dac nu se mai pot face alegeri, algoritmul se termin. Altfel, se selecteaz spectacolul
gsit si se reia algoritmul de la pasul P3.
Pag 1/6
sortare descrescatoare dupa terminare a spectacolelor (s[1..n])
sol[1]a[1]
k1
pentru i2,n execut
| dac s[i].inceput>=sol[k].terminare
| | atunci kk+1; sol[k]s[i]
|
scrie sol[1..n]
Solutie
Vom reprezenta o solutie a problemei ca un vector x, cu n componente, n care retinem pentru
fiecare obiect fractiunea ncrcat n rucsac. Deci vectorul x trebuie s ndeplineasc
urmtoarele conditii:
1). xi[0,1], i{1, 2, , n}.
2). g1x1+g2x2++gnxnGmax
3). f(x)=c1x1+c2x2++cnxneste maxim.
Algoritmul:
P1. Ordonm obiectele descresctor dup cstigul pe unitatea de greutate (valoare care
constituie o msur a eficientei transportrii obiectelor).
P2. Ct timp este posibil (ncap n rucsac), selectm n ordinea dat obiectele n ntregime.
P3. Completm rucsacul cu un fragment din urmtorul obiect ce nu a fost selectat
6. Problema banilor
(Greedy euristic - soluie obinut nu este ntotdeauna optim)
Scriei un program, care afieaz modalitatea de plat, folosind un numr minim de bancnote, a
unei sume ntregi S de lei (S<20000). Plata se efectueaz folosind bancnote de n tipuri distincte cu
valorile b1=1 leu, b2,...bn, cu valoarea de lei. Din fiecare tip de bancnote avem la dispozi ie un numr
nelimitat.
Pag 2/6
3 (=n )
1 5 10
Ieire: 6x10+1x5+2x1
Se d o tabl de ah cu dimensiunea nxn. Un cal se afl n pozi ia (1,1). Scriei un program care s
afieze un ir de mutri ale calului astfel nct acesta s acopere ntreaga tabl fr a trece printr-o
csu de dou ori.
Un comis voiajor pleac dintr-un anumit ora i trebuie s viziteze un numr de ora e i s se ntoarc n
oraul din care a plecat, cu un efort minim.
Orice ora i este legat de orice alt ora j printr-un drum de A[i][j] km. Se cere traseul pe care trebuie sa-l
parcurg comisul astfel nct s parcurg un numr minim de kilometri.
matricea A
0 1 5 5 3
1 0 2 4 1
5 2 0 6 1
5 4 6 0 9
3 1 1 9 0
O soluie: 1,2,5,3,4,1
lungime drum=14
OBS. Dac nu toate oraele sunt legate ntre ele printr-o osea putem considera c dintan a dintre ele
este un numr foarte mare ( km).
Considerm un depozit cu n (n1000) camere, care contin respectiv cantittile de marf C1, C2,
, Cn, (numere naturale). Scrieti un program care s determine un grup de camere cu
proprietatea c suma cantittilor de marf pe care le contin se poate mprti exact la cele n
camioane care o transport.
Un instructor de schi are la dispoziie n perechi de schiuri (n<50) pe care trebuie s le distribuie
la n elevi nceptori. Scriei un program care s distribuie cele n perechi de schiuri astfel nct
suma diferenelor absolute dintre nlimea elevului si lungimea schiurilor atribuite s fie minim.
Pag 3/6
12. Zig-zag (Greedy)
Din fsierul ZigZag.inse citesc Nnumere ntregi (N1000). Afsai pe prima linie a
fsierului ZigZag.out cel mai lung MZigZag care se poate construi din numerele
citite. Numim MZigZag o secven de numere a1, a2, ..., am astfel nct
a1a2a3a4a5... am1am.
De exemplu:
ZigZag.in ZigZag.out
7
75014930937154
Se consider n iruri de numere ordonate cresctor S1,S2,...,Sn, avnd lungimile L1, L2, ...,Ln.
S se interclaseze irurile date i s se obin un nou ir cu lungimea L1+L2+L3+...+Ln, astfel
nct numrul de comparaii ntre elementele irurilor date s fie minim.
Date de intrare
Fisierul de intrare react.in contine:
pe prima linie numrul natural N, care reprezint numrul de reactivi;
pe fecare dintre urmtoarele N linii se afl min max (dou numere ntregi
separate printr-un spatiu);
numerele de pe linia x+1 reprezint temperatura minim, respectiv temperatura
maxim de stocare a reactivului x.
Date de iesire
Fisierul de iesire react.outva contine o singur linie pe care este scris numrul
minim de frigidere necesar.
Restrictii
1N8000
100minxmaxx100(numere ntregi, reprezentnd grade Celsius), pentru
orice xde la 1la N
un frigider poate contine un numr nelimitat de reactivi
Exemple
Exemplul 1 Exemplul 2 Exemplul 3
reactivi.in reactivi.out reactivi.in reactivi.out reactivi.in reactivi.out
3 2 5 2 4 3
-10 10 -10 10 2 5
-2 5 10 12 5 7
20 50 -20 10 10 20
7 10 30 40
Pag 4/6
7 8
Se dau N intervale [Ai,Bi] (1 i N). Calculati suma lungimilor tuturor intervalelor. Intervalele
care se suprapun se vor lua in considerare o singura data.
Date de Intrare
Date de Iesire
Restrictii
1 N 5.000
-1.000.000 Ai Bi 1.000.000
1 T 75
Exemplu
linterv.in linterv.out
1 18
6
-5 5
0 3
2 8
10 13
11 15
100 100
Pag 5/6
Indicatie: se ordoneaz intervalele dup extremitatea stng. Printr-o parcurgere liniar a
sirului intervalelor, se actualizeaz pas cu pas capatul stng si cel drept al intervalului reuniune.
Restrictii:
n<16000
ai,bi<2000000000
Exemplu>
7 se va afisa:
0 10 4
2 9
3 8
1 15
6 20
1 7
2 5
La parcurgerea sirului dublu-sortat se va actualiza cel mai mare capt din dreapta maxd (initial
maxd=extremitatea dreapta a primului interval). Un interval cu extremitatea dreapt
d < maxd este inclus intr-ul altul din sir, deci va fi eliminat, altfel maxd=d.
Exemplu:
intrare: N = 5, intervalele: [0, 2], [1, 7], [2, 6], [5, 14], [8, 16]
iesire: M = {2, 14}
explicatie: punctul 2 se afla n primele 3 intervale, iar punctul 14 n ultimele 2
Pag 6/6