stravechi” – cu totii ne impartim treburile in sarcini mai mici, pentru a fi capabili sa le indeplinim –de la cum facem curat,pana la contruirea unei case sau aranjarea unei echipe de fotbal in teren.
Deci de ce nu ne-am inspira din felul in care
vaneaza leii sau cum a fost cucerita Europa de Caesar pentru am rezolva o problema la informatica? Folosirea acestui algoritm imbunatateste eficienta, insa memoria alocata este mai mare.
Nu toate problmele pot fi
rezolvate insa cu aceasta metoda #include <iostream> MAXIMUL UNUI VECTOR using namespace std; int v[10],n;
int max(int i, int j)
{ Funcția căutată va genera valoarea int a, b, m; maximă dintre numerele reținute în if (i==j) return v[i]; else vector pe o poziție dintre i și j (inițial, { i=1, j=n). Pentru aceasta, se m = (i+j)/2; procedează astfel: a = max(i, m); dacă i=j, valoarea maximă va fi v[i]; b = max(m+1, j); în caz contrar, se împarte vectorul în if (a>b) return a; doi subvectori - presupunem varianta else return b; pentru paralelizare pe 2 procesoare. } } Se calculează mijlocul m al intervalului [i, j]: m = (i+j) div 2. Primul int main( ) subvector va conține componentele { de la i la m, al doilea va conține cout<<”n=”;cin>>n; componentele de la (m+1) la j; se for (int i=1; i<=n; i++) rezolvă subproblemele (aflându-se { astfel maximul pentru fiecare din cout<<”v[“<<i<<”]=”; cin>>v[i]; } subvectori), iar soluția curentă va fi cout<<”max=”<<max(1,n); dată de valoarea maximă dintre return 0; rezultatele celor două subprobleme. }