Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Problema!  (Citit de 2625 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
artuditu
Strain


Karma: -3
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« : Decembrie 12, 2013, 20:52:05 »

se cere de la tastatura un numar natural n care reprezinta numarul de artificii, urmate de citirea a n perechi de valori reale pozitive h si d,
reprezentand inaltimea la care s-au ridicat si durata de ardere. Sa se calculeze:
             a)inaltimea maxima si cate artificii au ajuns la aceasta.
             b)sa determin si sa afisez lungimea celei mai lungi secvente de artificii cu inaltimi crescatoare si durata medie de ardere a acestora. daca sunt mai multe secvente de aceeasi marime, se va afisa cea cu durata medie de ardere mai mare.
             !!!a-ul l-am rezolvat, dar am probleme la rezolvarea punctului b!!!
Memorat
harababurel
Client obisnuit
**

Karma: 23
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #1 : Decembrie 20, 2013, 20:19:20 »

Punctul b) coincide cu problema determinarii secventei crescatoare de lungime maxima, care se rezolva prin metoda programarii dinamice:

Iti propui sa construiesti un sir dp() cu semnificatia dp(i) = lungimea maxima a unei secvente care incepe pe pozitia i, si este crescatoare.
Pe pozitia n exista o singura secventa (de lungime 1), deci dp(n) = 1 (asta e subproblema elementara).
Pentru orice alt indice i, care ia valori de la n-1 la 1, construiesti dinamica pe baza recurentei:
1) dp(i) = 1, daca v(i) > v(i+1)
2) dp(i) = 1 + dp(i+1), daca v(i) <= v(i+1)

Recurenta se interpreteaza asa:
1) daca valoarea curenta o depaseste pe cea din dreapta, inseamna ca nu pot construi o secventa cu ambele (nu ar fi crescatoare); construiesti deci secventa formata doar din elementul curent.
2) daca valoarea curenta nu o depaseste pe cea din dreapta, inseamna ca poti alatura elementul curent secventei optime care incepe cu elementul urmator (adica dp(i+1)) si obtii o secventa mai mare cu un element decat cea care incepe vecinul din dreapta.

La final cauti maximul din dp(), gasesti capetele secventei respective, calculezi media.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines