Chirurgia cranio-cerebrală minim invazivă
Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne. Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale. www.neurohope.ro |
Problema cu lingouri de aur
Last Updated: Jun 08 2018 20:32, Started by
AlexMatei2000
, Jun 06 2018 12:11
·
0
#19
Posted 08 June 2018 - 16:52
Alocare dinamica (de mana sau cu std::vector) si iti incap elemente cat tine memoria. Dar nici nu trebuie sa le tii pe toate in array, algoritmul gasit le proceseaza pe rand.
|
#20
Posted 08 June 2018 - 17:52
ce algoritmi ati folosit?
nu sunt convins ca un algoritm liniar (gen greedy) gaseste intotdeauna solutia optima. |
#21
Posted 08 June 2018 - 17:59
_Smiley_, on 08 iunie 2018 - 17:52, said:
ce algoritmi ati folosit? nu sunt convins ca un algoritm liniar (gen greedy) gaseste intotdeauna solutia optima. #include <iostream> #include <fstream> using namespace std; main() { ifstream lin("input-10.txt"); char s1[5],s2[5],s3[5]; int n; struct{ int x,y,z; } lingou[100]; lin>>n; for (int i=0;i<n;i++) { lin>>s1>>lingou[i].x>>lingou[i].y>>lingou[i].z>>s2>>s3; } int aux; for (int j=0;j<n;j++) if (lingou[j].x>lingou[j].y){ aux=lingou[j].x; lingou[j].x=lingou[j].y; lingou[j].y=aux; } for (int j=0;j<n;j++) if (lingou[j].y>lingou[j].z){ aux=lingou[j].y; lingou[j].y=lingou[j].z; lingou[j].z=aux; } for (int j=0;j<n;j++) if (lingou[j].x>lingou[j].y){ aux=lingou[j].x; lingou[j].x=lingou[j].y; lingou[j].y=aux; } /// le aranjez crescator, ca sa scap dea cea mai mare din ele. int max1=0,max2=0; for (int i=0;i<n;i++) if (lingou[i].x>max1) max1=lingou[i].x; for (int i=0;i<n;i++) if (lingou[i].y>max2) max2=lingou[i].y; cout<<max1*max2<<endl; return 0; }E in c++. L-am explicat in pagina anterioara. Nu functioneaza pentru 100% din cazuri, dar majoritatea sunt corecte. Nu cred ca metoda greedy sa functioneze in acest caz. Oricum metodele alea sunt antice si necesita o gramada de linii de cod. Acum se poate de realizat acelasi lucru in mult mai putine linii, si cu o complexitate mai mica de asemena. Edited by AlexMatei2000, 08 June 2018 - 18:05. |
#22
Posted 08 June 2018 - 18:03
Algoritmul meu arata cam asa. Nu garantez ca e corect in toate cazurile (daca cineva are cazuri aparte, ar prinde bine niste intrari de test).
Plecand de la eliminarea laturii celei mai mari a fiecarui lingou: algoritm.png 177K 13 downloads Edited by dani.user, 08 June 2018 - 18:12. |
#23
Posted 08 June 2018 - 20:25
AlexMatei2000, on 08 iunie 2018 - 17:59, said:
...Nu cred ca metoda greedy sa functioneze in acest caz. Oricum metodele alea sunt antice si necesita o gramada de linii de cod. Acum se poate de realizat acelasi lucru in mult mai putine linii, si cu o complexitate mai mica de asemena. si asa cum ti-ai dat singur seama, nu e o solutie corecta. pornesti de la presupunerea ca rezultatul va fi un singur orificiu, si evident ca nu e cazul. dani.user, on 08 iunie 2018 - 18:03, said:
Algoritmul meu arata cam asa. Nu garantez ca e corect in toate cazurile (daca cineva are cazuri aparte, ar prinde bine niste intrari de test). ma intreb daca se poate demonstra matematic ca renuntarea la latura cea mai mare nu afecteaza obtinerea unui optim... |
#24
Posted 08 June 2018 - 20:32
Bun exemplu. Cred ca l-ar rezolva algoritmul meu daca sortez initial lingourile in ordine descrescatoare (a ariei probabil).
Renuntarea la latura cea mai mare nu o vad ca o dificultate matematica. Practic cautam cea mai mica proiectie in plan a lingoului, latura cea mai mare fiind perpendiculara pe acea proiectie, deci irelevanta. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users