Chirurgia spinală minim invazivă
Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical. Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale. www.neurohope.ro |
Problema C++ Eficienta
Last Updated: Jun 23 2019 13:56, Started by
MihaelaEla
, Jun 23 2019 11:18
·
0
#1
Posted 23 June 2019 - 11:26
Fisierul BAC.TXT contine un sir de cel mult 1000 de numere naturale, despărtite prin câte un spatiu, fiecare număr având cel mult 9 cifre. Cel putin două numere din fisier sunt pătrate perfecte. Se citeste sirul din fisier si se cere ca, utilizând un algoritm eficient din punct de vedere al memoriei utilizate si al timpului de executare, să se determine si să se afiseze pe ecran lungimea maximă a unei secvente a sirului care începe si se încheie cu câte un număr pătrat perfect. O secventă este formată din termeni aflati pe pozitii consecutive în sir.
Lungimea unei secvente este egală cu numărul de termeni ai acesteia. Exemplu: dacă fiierul BAC.TXT contine numerele 11 245 36 67 8 576 11 16 41 144 67 89 1011 pe ecran se afisează 8 (corespunzător secventei 36 67 8 576 11 16 41 144). Eu am facut ceva, imi da raspunsul, dar nu pare corect... int main() { while(fin >>x) { if(sqrt(x)*sqrt(x)==x) { lg1++; if(lg1>lgmax) lgmax=lg1; lg=lg+lg1; if(lg>lgmax) lgmax=lg; lg1=1; } } if(lg1>lgmax) lgmax=lg1; lg=lg+lg1; if(lg>lgmax) lgmax=lg; cout << lgmax; return 0; } Va cer ajutorul! Multumesc!! int main() { while(fin >>x) { if(sqrt(x)*sqrt(x)==x) { lg++; if(lg>lgmax) lgmax=lg; } else if(lg) lg++; } cout << lgmax; return 0; } am mai facut ceva... Edited by MihaelaEla, 23 June 2019 - 11:20. |
#3
Posted 23 June 2019 - 11:52
Numele de variabile ar trebuie sa fie:
int prima_pozitie = -1 int ultima_pozitie = -1 Apoi iterezi inputul, si daca e patrat perfect, updatezi cele doua variabile. prima_pozitie o updatezi doar daca prima_pozitie == -1. ultima_pozitie o updatezi mereu cand e patrat perfect. Dupa bucla, solutia e ultima_pozitie - prima_pozitie + 1. Denumeste-ti variabilele cu cap, nu le fa varza, deoarece nume anapoda creaza varza la tine in creier, si asa faci greseli. A, si daca tot le numesti prima_pozitie si ultima_pozitie, atunci contorul in care tii minte unde te afli poate fi numit pozitia_curenta. Deci printre if-uri ai atribuiri de genul: prima_pozitie = pozitia_curenta; ultima_pozitie = pozitia_curenta; "Eficienta" nu e doar eficienta de memorie si eficienta de timp. Eficienta e si eficienta cu care un cititor strain care iti vede codul pentru prima oara, ti-l si intelege. Cand programatori cu 10+ ani de experienta te intreaba "ce e variabila X?", atunci TU ai o problema. Da, stiu, in scoala va baga doar varza in cap. Nu e scoala de vina, TU esti de vina. |
#4
Posted 23 June 2019 - 12:01
int isPerfectSquare(long int num) { // math goes here } if (isPerfectSquare(arrayNumbers[index])) { // logic goes here }Ca secventa incepe si se termina cu cate un patrat perfect intelegem. Este permisa prezenta altor patrate perfecte in secventa ? Edited by MarianG, 23 June 2019 - 12:05. |
#5
Posted 23 June 2019 - 12:20
#6
Posted 23 June 2019 - 12:48
In cazul asta as citi ultima pozitie de la dreapta la stanga.
in cel mai nefericit caz iterez intreg sirul. |
#7
Posted 23 June 2019 - 13:12
Din fisier citesti numerele de la stanga la dreapta. Nu merita sa le retii pe toate in memorie doar sa le poti parcuge in sens invers.
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users