Bine ai venit guest
 
User:
Pass:

[Creare cont]
[Am uitat parola]
iBac = materialul ULTRACOMPLET de pregătire pentru bac la mate. Dacă vrei poţi.
Forum pro-didactica.ro  [Căutare în forum]

[Subiect nou]   [Răspunde]
[1]
Autor Mesaj
rotaruioana
Grup: membru
Mesaje: 62
18 Aug 2021, 00:43

[Trimite mesaj privat]

Informatica    [Editează]  [Citează] 

Salutare! Ma poate ajuta cineva cu aceasta problema de clasa a 9-a in C++, va rog !

Fie un vector cu 2*n elemente valori naturale. Din vector sunt sterse pe rand elemente din k in k pozitii. Numararea pozitiilor se va face cu revenire la prima in cazul in care indicele curent este mai mare decat n. Operatia se repeta de n ori. Determinati pozitia de inceput a numaratorii, astfel incat elementele ramase in vector sa aiba suma maxima. Se va afisa pozitia de inceput a numaratorii si suma elementelor ramase in vector.

Exemplu : Pentru n=3 si k=3 si A=(3,10,15,4,2,10) se va afisa 2, 35. Incepand numaratoarea de la pozitia 2, au fost sterse in ordine elementele de pe pozitiile 4,1,5

Se incepe numaratoarea de la elementul 10: 10,15,4 si se taie 4. Apoi se numara iar 2,10,3 si se taie 3
Si apoi 10,15,2 pentru ca 4 a fost taiat deja si se taie 2

gauss
Grup: Administrator
Mesaje: 6933
18 Aug 2021, 00:43

[Trimite mesaj privat]


[Citat]
Salutare! Ma poate ajuta cineva cu aceasta problema de clasa a 9-a in C++, va rog !

Fie un vector cu 2*n elemente valori naturale. Din vector sunt sterse pe rand elemente din k in k pozitii. Numararea pozitiilor se va face cu revenire la prima in cazul in care indicele curent este mai mare decat n. Operatia se repeta de n ori. Determinati pozitia de inceput a numaratorii, astfel incat elementele ramase in vector sa aiba suma maxima. Se va afisa pozitia de inceput a numaratorii si suma elementelor ramase in vector.

Exemplu : Pentru n=3 si k=3 si A=(3,10,15,4,2,10) se va afisa 2, 35. Incepand numaratoarea de la pozitia 2, au fost sterse in ordine elementele de pe pozitiile 4,1,5

Se incepe numaratoarea de la elementul 10: 10,15,4 si se taie 4. Apoi se numara iar 2,10,3 si se taie 3
Si apoi 10,15,2 pentru ca 4 a fost taiat deja si se taie 2


Probabil ca se revine la inceput daca pozitiile, luate din k in k, trec de numarul maxim (la inceput 2n) de elemente ramase in lista.

Idea urmatoare de programare este simpla si relativ simplu de implementat.
Se calculeaza mai intai o "masca" a elementelor care vor ramane la sfarsit, daca plecam de la prima pozitie.
Pozitiile sunt initial in exemplul dat 0, 1, 2, 3, 4, 5.
- Plecam cu 0, adunam (k-1) = 2, ajungem in 2, taiem 2, tinem minte pozitia 2, o luam modulo numarul de elemente ramase, cinci, 2 modulo 5 este 2. Noua lista este 0, 1, *3, 4, 5.
- Plecam cu pozitia 2, adunam 2, obtinem 4, pe acest loc este 5, taiem 5, tinem minte pozitia 4, o luam modulo numarul de elemente ramase, patru, 4 modulo 4 este 0. Noua lista este *0, 1, 3, 4.
- Plecam cu pozitia 0, adunam 2, obtinem 2, pe acest loc este 3, taiem 3, tinem minte pozitia 2, o luam modulo numarul de elemente ramase, trei, 2 modulo 3 este 2. Noua lista este 0, 1, *4.

Am eliminat n elemente ne oprim.

Masca calculata este 0, 1, 4.
Consideram toate mastile obtinute prin ciclare, daca dam de numere mai mari decat n, le luam modulo n. Aceste masti, impreuna cu sumele de pe pozitiile corespunzatoare, sunt in exemplul dat:

(3,10,15,4,2,10)

0+0, 1+0, 4+0 adica 0, 1, 4 cu elementele 3, 10, 2 si suma 15.
0+1, 1+1, 4+1 adica 1, 2, 5 cu elementele 10, 15, 10 si suma 35.
0+2, 1+2, 4+2 adica 2, 3, 0 cu elementele 15, 4, 3 si suma 22.
0+3, 1+3, 4+3 adica 3, 4, 1 cu elementele 4, 2, 10 si suma 16.
0+4, 1+4, 4+4 adica 4, 5, 2 cu elementele 2, 10, 15 si suma 27.
0+5, 1+5, 4+5 adica 5, 0, 3 cu elementele 10, 3, 4 si suma 17.

Se ia maximul si pozitia pe care se afla maximul.






---
df (gauss)
[1]


Legendă:  Access general  Conţine mesaje necitite  47502 membri, 58497 mesaje.
© 2007, 2008, 2009, 2010 Pro-Didactica.ρ