Informatică, întrebare adresată de gaitanadrian71, 8 ani în urmă

4. Se citeste un vector de numere intregi, de lungime n. Se cere: a) Sa se inlocuiasca valoarea maxima a elementelor din vector cu inversul sau. (Presupunem ca maximul este unic)​

Răspunsuri la întrebare

Răspuns de CatalinGrigoriev
1

Pentru a rezolva aceasta problema, putem parcurge vectorul incepand de la primul element si pastram o variabila care sa retina valoarea maxima la fiecare pas. Dupa ce am parcurs intreg vectorul, putem inlocui elementul care are valoarea maxima cu inversul sau.

In cazul in care vectorul contine elemente negative, trebuie sa luam in considerare faptul ca inversul unui numar negativ este pozitiv. De exemplu, inversul lui -5 este 1/5, care este pozitiv.

In pseudocod, aceasta rezolvare ar arata in felul urmator:

pentru i = 0 la n-1

   daca vector[i] > valoare_maxima

       valoare_maxima = vector[i]

inversul_valorii_maxime = 1 / valoare_maxima

pentru i = 0 la n-1

   daca vector[i] == valoare_maxima

       vector[i] = inversul_valorii_maxime

Aceasta rezolvare are complexitatea temporala O(n), ceea ce inseamna ca ea parcurge vectorul de doua ori, ceea ce este eficient din punct de vedere al timpului de executie.


andrei750238: 1. Nu era mai usor daca retineai indicele valorii maxime ? Asa nu mai trebuia sa parcurgi de doua ori vectorul

2. Nu ai initializat valoare_maxima in acest algoritm.
Alte întrebări interesante