online: 7; azi: 469; total: 52475 Manual clasa a xi a - Tehnici de programare - Metoda greedy

Manual clasa a Xi a

Tehnici de programare

Metoda greedy

Fiind dată o mulţime A cu n numere reale, să se determine o submulțime a sa care are proprietatea că suma elementelor submulțimii este maximă. Indicaţie . Submulţimea va fi formată din toate numerele pozitive, iar dacă nu există numere pozitive, din cel mai mare număr din mulțime.
# include < iostream >
int main () {
int n;
std :: cout << " Introduceti numarul de elemente din multime : " ;
std ::cin >> n;
double element, suma = 0.0 , max_negativ = -1e9 ;
bool exista_pozitiv = false ;
std :: cout << " Introduceti elementele multimii : " ;
for ( int i = 0 ; i < n; i++) {
std ::cin >> element;
if (element > 0 ) {
exista_pozitiv = true ;
suma += element;
} else if (element > max_negativ ) {
max_negativ = element;
}
}
if (! exista_pozitiv ) {
suma = max_negativ ;
}
std :: cout << "Suma maxima este: " << suma << std :: endl ;
return 0 ;
}

Programul cere numărul de elemente din mulțime și apoi citeste elementele multimii . Se parcurge mulțimea și se calculează suma elementelor pozitive. Dacă se întâlnește un număr negativ, se verifică dacă este mai mare decât valoarea maximă negativă întâlnită până acum.
După ce s-au procesat toate elementele, programul verifică dacă a întâlnit cel puțin un număr pozitiv. Dacă nu, suma maximă va fi cel mai mare număr negativ întâlnit. În caz contrar, suma maximă va fi suma elementelor pozitive. La final, programul afișează suma maximă obținută.