Se citesc două numere naturale n şi m (n >= m), apoi se citeşte un şir de n numere întregi. Să se
determine o submulţime de m elemente din şir cu proprietatea că suma elementelor din mulţime este
maxim. De exemplu, pentru n = 6, m = 3 şi şirul de numere 5, –3, 12, 8, 1, 2, soluţia este mulţimea?
( IN PASCAL AM NEVOIE, DACA-I VORBA DE VREUN PROGRAM )
Răspunsuri la întrebare
Răspuns de
1
Răspuns:
Daca prin submultime te referi la numere nu neaparat consecutive atunci o solutie simpla ar fi:
Se sorteaza vectorul ( aici pot fi folosite multe functii, qsort, selectsort, bubblesort etc..)
Si apoi se iau cele mai mari m elemente ( ultimele m )
Sort(v) /// Se sorteaza vectorul
s = 0;
for ( i = n; i > n - m; i -- ) {
s += v[i]
}
print(s)
Nu e un program in pascal dar cred ca il poti intelege si tu
Pentru exemplul tau, sirul sortat este
-3, 1, 2, 5, 8, 12
iar cum m = 3, vom lua ultimele 3 elemente
Pentru o solutie cu un timp liniar se pot folosi statistici de ordine ceea ce duc la o solutie in O(n)
Explicație:
Sper ca te-am ajutat
1love:
mersi, cred ca-i bun si raspunsul asta :)
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Engleza,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă