This shows you the differences between two versions of the page.
pa:laboratoare:laborator-01 [2021/03/08 22:48] darius.neatu [Extra] |
pa:laboratoare:laborator-01 [2022/03/21 23:11] (current) radu.nichita [Exerciții] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Laborator 01: Divide et Impera ====== | ====== Laborator 01: Divide et Impera ====== | ||
- | Responsabili: | ||
- | * [[neatudarius@gmail.com|Darius-Florentin Neațu (2017-2021)]] | ||
- | * [[radunichita99@gmail.com | Radu Nichita (2021)]] | ||
- | * [[cristianolaru99@gmail.com | Cristian Olaru (2021)]] | ||
- | * [[mirunaelena.banu@gmail.com | Miruna-Elena Banu (2021)]] | ||
- | * [[maraioana9967@gmail.com | Mara-Ioana Nicolae (2021)]] | ||
- | * [[stefanpopa2209@gmail.com | Ștefan Popa (2018-2020)]] | ||
- | Autori: | + | |
- | * [[visanr95@gmail.com|Radu Vișan (2018)]] | + | |
- | * [[cristb@gmail.com|Cristian Banu (2018)]] | + | |
- | * [[neatudarius@gmail.com|Darius-Florentin Neațu (2018)]] | + | |
- | | + | |
===== Obiective laborator ===== | ===== Obiective laborator ===== | ||
Line 381: | Line 370: | ||
} | } | ||
} | } | ||
- | return res; | + | return (res != -1 && v[res] == x) ? res : -1; |
} | } | ||
Line 395: | Line 384: | ||
} | } | ||
} | } | ||
- | return res; | + | return (res != -1 && v[res] == x) ? res : -1; |
} | } | ||
Line 486: | Line 475: | ||
} | } | ||
} | } | ||
- | return res; | + | return (res != -1 && v[res] == x) ? res : -1; |
} | } | ||
Line 500: | Line 489: | ||
} | } | ||
} | } | ||
- | return res; | + | return (res != -1 && v[res] == x) ? res : -1; |
} | } | ||
Line 559: | Line 548: | ||
Atenție la înmulțire! Rezultatul **temporar** poate provoca un overflow. | Atenție la înmulțire! Rezultatul **temporar** poate provoca un overflow. | ||
- | Solutii: | + | |
+ | Soluții: | ||
* **C++**: $a * b$ => $1LL * a * b$ | * **C++**: $a * b$ => $1LL * a * b$ | ||
* **Java**: $a * b$ => $1L * a * b$ | * **Java**: $a * b$ => $1L * a * b$ | ||
Line 583: | Line 573: | ||
<note> | <note> | ||
- | Aceasta problema nu are schelet. | + | Aceasta problema nu are schelet, dar poate fi testată pe infoarena, la problema [[https://www.infoarena.ro/problema/inv | Inv]]. |
</note> | </note> | ||
Line 626: | Line 616: | ||
</spoiler> | </spoiler> | ||
+ | <spoiler Secventa descrescatoare> | ||
+ | Dându-se N numere întregi sub forma unei secvenţe de numere strict crescătoare, care se continuă cu o secvenţă de întregi strict descrescătoare, se doreşte determinarea punctului din întregul şir înaintea căruia toate elementele sunt strict crescătoare, şi dupa care, toate elementele sunt strict descrescătoare. Considerăm evident faptul că acest punct nu există dacă cele N numere sunt dispuse într-un şir fie doar strict crescător, fie doar strict descrescător. | ||
+ | </spoiler> | ||
- | <spoiler SSM> | + | <spoiler K closest points to origin> |
- | Puteți rezolva aceasta problema de [[https://ocw.cs.pub.ro/courses/pa/laboratoare/laborator-03#ssm | + | Puteți rezolva această problemă pe [[https://leetcode.com/problems/k-closest-points-to-origin/ | leetcode]] |
- | | aici]]. | + | </spoiler> |
- | <note> | + | <spoiler Merge k Sorted Lists> |
- | Pentru problema SSM vom studia o soluție potrivita in lab03. Puteți să încercați să o rezolvați cu Divide et Impera pentru a exersa cele învățate astăzi. | + | Puteți rezolva această problemă pe [[https://leetcode.com/problems/merge-k-sorted-lists/ | leetcode]] |
- | </note> | + | |
</spoiler> | </spoiler> | ||
- | <spoiler Secventa descrescatoare> | ||
- | Dându-se N numere întregi sub forma unei secvenţe de numere strict crescătoare, care se continuă cu o secvenţă de întregi strict descrescătoare, se doreşte determinarea punctului din întregul şir înaintea căruia toate elementele sunt strict crescătoare, şi dupa care, toate elementele sunt strict descrescătoare. Considerăm evident faptul că acest punct nu există dacă cele N numere sunt dispuse într-un şir fie doar strict crescător, fie doar strict descrescător. | ||
- | |||
- | </spoiler> | ||
===== Referințe ===== | ===== Referințe ===== | ||
- | [0] Chapter **Divide et Impera**, "Introductions to Algorithms", Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein | + | [0] Chapter **Divide-and-Conquer**, "Introduction to Algorithms", Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein |