Neurochirurgie minim invazivă
"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv. Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice. www.neurohope.ro |
[TEMA] Subsir crescator/descrescator
Last Updated: Feb 14 2016 12:39, Started by
aLexCM
, Feb 13 2016 22:54
·
0
#1
Posted 13 February 2016 - 22:54
Am problema de aici.
[ http://editor.365plus.ro/poze/poza-1b70aa03d58e5be823acf6d1a262320af5669b97.jpg - Pentru incarcare in pagina (embed) Click aici ] Si codul:
Spoiler
Problema e ca, codul verifica numai un subsir in functie de primul numar citit. Daca este par, verifica subsirul de elemente pare iar cel de numere impare ramane neverificat. Si viceversa. Stiu ca buba (printre altele) e la primul if. M-am gandit sa salvez elementele pare intr-un vector si pe cele impare in alt vector. Apoi sa-l parcurg pe fiecare si sa vad daca-i monoton sau nu. Dar cica sunt cel mult un milion de numere in fisier si n-as aloca atata memorie. Edited by aLexCM, 13 February 2016 - 22:57. |
#2
Posted 13 February 2016 - 23:51
Quote M-am gandit sa salvez elementele pare intr-un vector si pe cele impare in alt vector. Apoi sa-l parcurg pe fiecare si sa vad daca-i monoton sau nu. Dar cica sunt cel mult un milion de numere in fisier si n-as aloca atata memorie. Trebuie doar să le compari două câte două. N-ai nevoie de vectori. Eu aş lua 4 variabile int par_anterior, impar_anterior, par_actual, impar_actual; unde verifici dacă elementul par actual este mai pare decât elementul par citit anterior, sau mai mic faţă de cel impar citit anterior, în caz contrar. Enunţul zice că sunt numere naturale . par_anterior şi impar_anterior le poţi inizializa cu -1 (de exemplu), ca să ştii dacă elementul citit este primul par sau impar. Edited by sftpdt, 13 February 2016 - 23:53. |
#3
Posted 13 February 2016 - 23:51
Tu faci mereu comparatia cu primul numar din sir citit ( adica x) ?
|
#4
Posted 14 February 2016 - 01:30
L-am rezolvat. Mersi mult sftpdt!
Codul complet:
Spoiler
Edited by aLexCM, 14 February 2016 - 01:34. |
#5
Posted 14 February 2016 - 03:27
Ce complexitate are algoritmul? O(1)?
Edited by aLexCM, 14 February 2016 - 03:28. |
#7
Posted 14 February 2016 - 09:51
#8
Posted 14 February 2016 - 10:19
Am de făcut 4 observații:
1. Dacă un număr nu este par atunci este în mod obligatoriu impar. 2. Dacă inițializezi par_anterior și impar_anterior cu valori corespunzătoare nu mai e nevoie să verifici dacă valoarea anterioară e pară sau impară atunci când verifici dacă e crescător sau descrescător. 3. Dacă tot ai o variabilă ok, poți să te folosești de ea ca să ieși din while atunci când ai detectat că nu sunt respectate condițiile. 4. Pentru fiecare număr din fișier faci un număr constant de operații deci este O(N). |
#9
Posted 14 February 2016 - 10:40
Spoiler
Lui par_anterior i-am dat valoarea maxima ca sa nu intre in primul if la prima verificare. Daca era negativ, x era evident mai mare decat el si ok devenea 0. Asa i-am dat LONG_MAX si trece de prima verificare. Edited by aLexCM, 14 February 2016 - 10:53. |
#10
Posted 14 February 2016 - 10:59
Eu verificam la început dacă par_anterior=-1, caz în care îi atribuiam numărul citit; altfel făceam comparaţiile necesare. La fel şi dacă numărul era impar.
|
|
#11
Posted 14 February 2016 - 12:39
in loc de atatea if si else invata sa folosesti switch
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users