|

Metoda Greedy  în Programare 1

1. Obiectivele lecției: 2. Ce este metoda Greedy? 3. Etapele metodei Greedy 4. Avantaje și dezavantaje Avantaje Dezavantaje Simplu de înțeles și implementat. Nu garantează soluția optimă pentru toate problemele. Eficient din punct de vedere al timpului. Necesită o analiză atentă pentru a verifica aplicabilitatea. Util în probleme cu substructuri optime. Greșeli în alegerea regulii…

|

Metoda Backtracking în Programare 2

1. Obiectivele lecției: 2. Ce este metoda Backtracking? 3. Probleme rezolvate prin backtracking 4. Avantaje și dezavantaje Avantaje Dezavantaje Garantează găsirea soluției, dacă există. Ineficient pentru probleme de dimensiuni mari. Explorează toate posibilitățile. Timp de execuție poate fi foarte mare (explozie combinatorică). Permite revenirea și testarea altor soluții. Poate necesita optimizări pentru a fi practică….

|

Metoda Divide et Impera în Programare 3

1. Obiectivele lecției: 2. Ce este metoda Divide et Impera? 3. Caracteristici și aplicabilitate 4. Avantaje și dezavantaje Avantaje Dezavantaje Reduce complexitatea problemelor mari. Poate consuma mai multă memorie (recursivitate). Ușor de paralelizat. Necesită o analiză atentă pentru combinare. Aplicabilitate largă. Nu toate problemele pot fi împărțite logic. 5. Exemple practice Exemplu 1: Binary Search…

|

Metoda Programării Dinamice în Programare 4

1. Obiectivele lecției: 2. Ce este Programarea Dinamică? 3. Avantaje și dezavantaje Avantaje Dezavantaje Reduce recalculările prin memorarea soluțiilor. Necesită mai multă memorie pentru stocarea intermediară. Garantează o soluție optimă, dacă există. Poate fi dificil de implementat pentru probleme complexe. Eficient pentru probleme care au subprobleme repetate. Necesită identificarea clară a subproblemelor. 4. Probleme rezolvate…

|

Alocarea Dinamică a Memoriei – Concepte de Bază 5

1. Obiectivele lecției: 2. Ce este alocarea dinamică a memoriei? 3. Cum funcționează alocarea dinamică în C++? int* p = new int; // Alocă memorie pentru un int *p = 42;          // Stochează valoarea 42 delete p;         // Eliberează memoria 4. Avantaje și dezavantaje Avantaje Dezavantaje Flexibilitate în gestionarea memoriei. Necesită gestionare manuală (risc de…

|

Structuri de Date Liniare Implementate Dinamic – Liste Liniare Simplu Înlanțuite 6

1. Obiectivele lecției: 2. Ce este o listă liniară simplu înlănțuită? 3. Avantaje și dezavantaje Avantaje Dezavantaje Dimensiunea listei este dinamică. Accesul la un element necesită parcurgere secvențială. Inserarea și ștergerea elementelor sunt eficiente. Consumul de memorie suplimentară pentru pointere. Nu este necesară alocarea unui bloc mare de memorie. Mai dificil de implementat comparativ cu…

|

Structuri de Date Liniare Implementate Dinamic – Liste Liniare Dublu Înlanțuite 7

1. Obiectivele lecției: 2. Ce este o listă liniară dublu înlănțuită? struct Nod {     int valoare;     Nod* urmator;     Nod* anterior; }; 3. Avantaje și dezavantaje Avantaje Dezavantaje Permite parcurgerea bidirecțională. Necesită mai multă memorie pentru pointere suplimentare. Operații de inserare și ștergere eficiente. Mai complicat de implementat decât listele simplu înlănțuite. Utilă…

|

Structuri de Date Liniare Implementate Dinamic – Liste Circulare Simplu Înlanțuite 8

1. Obiectivele lecției: 2. Ce este o listă circulară simplu înlănțuită? 3. Avantaje și dezavantaje Avantaje Dezavantaje Permite parcurgerea continuă a listei. Mai dificil de implementat decât listele simple. Eficientă pentru aplicații circulare (ex.: bucle). Gestionarea pointerilor poate fi complicată. Inserarea și ștergerea nodurilor sunt rapide. Este necesară atenție pentru a menține lista circulară. 4….

|

Structuri de Date Liniare Implementate Dinamic – Liste Circulare Dublu Înlanțuite 9

1. Obiectivele lecției: 2. Ce este o listă circulară dublu înlănțuită? struct Nod {     int valoare;     Nod* urmator;  // Pointer către următorul nod     Nod* anterior; // Pointer către nodul anterior }; 3. Avantaje și dezavantaje Avantaje Dezavantaje Parcurgere bidirecțională continuă. Gestionarea pointerilor este mai complexă. Eficientă pentru aplicații circulare (ex.: cozi). Necesită…

|

Structuri de Date Liniare Implementate Dinamic – Stiva 10

1. Obiectivele lecției: 2. Ce este o stivă? 3. Avantaje și dezavantaje Avantaje Dezavantaje Structură simplă și ușor de implementat. Accesibilitate limitată (doar vârful stivei). Eficientă pentru gestionarea problemelor LIFO. Necesită mai multe operații pentru acces aleator. Utilă în aplicații precum recursivitatea sau backtracking. 4. Implementarea unei stive folosind liste simplu înlănțuite Structura unui nod…