Sunteți pe pagina 1din 5

Sarcini pentru lucrul individual la disciplina UTCP

Data: 13.09.2018-25.10.208

Recursivitate:

Problema 1:

Scrieti o functie recursiva care primeste ca paramentru un numar natural n si returneaza numarul obtinut din n prin eliminarea cifrelor impare.

Exemplu: daca n=234435, functia returna 244.

Problema 2.

O harta este data intr-o matrice n*m in care valorile 1 reprezinta uscatul, iar valorile 0 reprezinta apa. Doua zone de uscat se considera ca fac parte din
acelasi continent daca sunt vecine pe linie sau pe coloana. Determinati numarul de continente de pe harta si care este aria (numarul de valori de 1) maxima
dintre ariile continentelor.

Exemplu:
harta.in
66
111010
001011
111000
010111
000111
110000
harta.out
4 (numarul de continente)
8 (aria continentului din stanga-sus)
Metoda „Divide et Impera”

Problema 3

Realizați sortarea prin interclasare (MergeSort) a unui vector citit dintr-un fișier. Rezultatul să fie scris în alt fișier.

Problema 4.

Scrieţi un program în care calculatorul să ghicească cît se poate de repede un număr natural la care v-aţi gândit. Numărul este cuprins între 1 şi 32.000.
Atunci când calculatorul propune un număr i se va răspunde prin 1, dacă numărul este prea mare, 2 dacă numărul este prea mic şi 0 dacă numărul a fost
ghicit.

Metoda Greedy

Problema 5

Colorarea hartii folosind metoda Greedy. Fiind data o harta cu n tari, se cere o solutie de colorare a hartii, utilizand cel mult patru culori, astfel incat doua
tari ce au frontiera comuna sa fie colorate diferit. Este demonstrat faptul ca sunt suficiente numai patru culori pentru ca orice harta sa poata fi colorata.

Exemplu:

colorare.in 34
35
6 45
alb verde galben rosu 56
12
13 colorare.out
14 1 alb
15 2 verde
16 3 galben
23 4 verde
25 5 rosu
26 6 galben
Metoda Backtracking

Problema 6.

Se dau n punct in plan prin coordonatele lor. Gasiti cel mai mare patrat care se poate forma cu varfurile in 4 dintre punctele citite.

date.in:
9
13
00
11
10
01
35
51
56
06
date.out:
0,1 5,1 5,6 0,6
Problema 7

Magazinul PetShop vinde n specii de pesti despre care se stiu m perechi de pesti care nu pot fi pusi in acelasi acvariu deoarece se ataca.

Gigi are un acvariu si vrea sa isi cumpere un numar maxim de specii de pesti de la magazinul PetShop. Ajutati-l pe Gigi sa aleaga speciile de pesti astfel incat
sa poata avea un numar maxim de specii in acvariul sau.

Exemplu:
n=6, m=5
perechile:
12
13
14
35
36
solutia: 2 4 5 6
Problema 8
Se citeste un numar natural n si apoi n numere naturale ordonate strict crescator reprezentand valorile a n bancnote.
Se citeste apoi o suma de bani s si se cere sa se plateasca in toate modurile posibile suma s cu bancnote de valorile precizate. Se presupune ca avem la
dispozitie oricate bancnote de fiecare valoare.
Exemplu:
n=4
valorile bancnotelor: 1 5 10 50
s=100
Se vor obtine solutii de forma:
2*50
5*10 1*50
10*10
2*5 4*10 1*50
...
35*1 1*5 1*10 1*50
...
95*1 1*5
100*1
Problema 8
O fotografie alb-negru este reprezentată sub forma unei matrice cu ele mente 0 sau 1 . în fotografie sunt reprezentate unul sau mai multe obiecte.
Porţiunile corespunzătoare obiectelor au valoarea 1 în matrice. Se cere să se determine dacă fotografia reprezintă unul sau mai multe obiecte. Exemplu:
Matricea de mai jos reprezintă două obiecte:
(0 1 10 1 0 0 0 0 0 11 11 1 0)
Programare DInamica
Problema 9
Problema bancomatului.
Se pune problema construirii unui bancomat care să fie capabil să furni zeze o anumită sumă clienţilor băncii. Pentru aceasta, aparatul dispune de un număr
k de bancnote. Deşi fiecare dintre aceste bancnote există în cantitate nelimitată, se doreşte returnarea restului cu un număr minim de bancnote. Se cere ca
dându-se o sumă S şi k numere reprezentând valorile bancnotelor (v 1, v2, v3,…, vn), să se determine numărul minim de bancnote cu care se poate plăti suma
S, în cazul în care acest lucru este posibil. Să se determine şi bancnotele cu care suma este plătită.
Observaţie
Problema nu este trivială, întrucât bancnotele pot avea orice valoare naturală. De exemplu, nu se poate plăti suma 25 cu bancnote având valoarea 7 şi 13).
De asemenea, strategia Greedy de a folosi monede de valoare maximă nu dă întotdeauna soluţia optimă (de exemplu, achitarea sumei 20 cu monede de
valoare 6, 5, 4, 1 ar genera soluţia (6, 6, 6, 1, 1), care nu este optimă).
Indicaţie
Notăm cu bi numărul minim de bancnote cu care poate fi plătită suma i. bs ne va da chiar soluţia problemei (numărul minim de bancnote necesare pentru a
plăti suma S). Prin convenţie, bi va fi infinit dacă suma i nu poate fi plătită cu bancnotele date. Se iniţializează elementele vectorului & cu valoarea infinit
(Integer .MAXINT în cazul nostru). Pentru fiecare bancnotă cu valoarea v k se pune bVk = 1. Apoi vom determina bi, cu formula de recurenţă

care exprimă faptul că suma i se poate obţine adăugând moneda la monedele necesare pentru a obţine suma i — v^. Reconstituirea soluţiei se face
reţinând pentru fiecare i indicele k pentru care s-a obţinut valoarea minimă.

Problema 10
Problema comis-voiajorului. Se consideră n orașe între care există curse aeriene directe. În orașul i se afl ă un comis-voiajor care trebuie să viziteze celelalte
n-1 orașe și să revină în localitatea din care s-a pornit. Elaboraţi un program care, cunoscînd distanţele d ij între orașe, determină ordinea în care ele vor fi
vizitate. Se cere ca distanţa parcursă de comis-voiajor să fi e cît mai mică, iar fi ecare oraș să fi e vizitat numai o singură dată.

S-ar putea să vă placă și