Advertisement
madalinaradu

p14-veverita

May 1st, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.73 KB | None | 0 0
  1. /*
  2.  
  3. O padure este impartita in nXm zone. In fiecare zona creste cate un pom. Din fiecare pom cade pe jos o cantitate de ghinde.
  4. In zona stanga sus se afla un veverita care vrea sa ajunga in zona dreapta jos. veveritaul se poate deplasa doar pe doua directii: in jos sau spre dreapta.
  5. Determinati cantitatea maxima de ghinde pe care le poate aduna veveritaul prin deplasarea din pozitia initiala in cea dorita.
  6. Citirea se face din fisierul veverita.in care contine pe prima linie dimensiunile livezii, adica n si m, si apoi cantitatea de ghinde din fiecare dintre cele nXm zone.
  7. Afisarea cantitatii maxime de ghinde se va face in fisierul veverita.out.
  8. Exemplu:
  9. veverita.in
  10. 3 3
  11. 0 4 1
  12. 0 1 1
  13. 1 0 1
  14. veverita.out
  15. 7
  16.  
  17. http://info.mcip.ro/?cap=Programare%20dinamica&prob=750
  18. */
  19.  
  20.  
  21. #include<fstream>
  22. using namespace std;
  23. ifstream f("p14-veverita.in");
  24. ofstream g("p14-veverita.out");
  25.  
  26. int a[101][101]; // a[i][j] = va retine cantitatea de ghinde.
  27. int c[101][101]; // c[i][j] = cantitatea maxima (castigul) ce se poate obtine ajungand in pozitia i,j;
  28.                  // c[i][j] = a[i][j] + max(c[i-1][j],c[i][j-1]);
  29.                  // adica nr de ghinde din pozitia curenta + (castigul obtinut daca se coboara in jos (c[i-1][j]) sau castigul obtinut daca se muta la dreapta  (c[i][j-1]))
  30. int n,m,i,j;
  31.  
  32. int max(int x, int y) {
  33.     return x>y?x:y;
  34. }
  35.  
  36. int main() {
  37.     // citim datele din fisier
  38.     f>>n>>m;
  39.     for(i=1; i<=n; i++){
  40.         for(j=1; j<=m; j++) {
  41.             f>>a[i][j];
  42.         }
  43.     }
  44.  
  45.     //calculam matricea castigurilor
  46.     for(i=1; i<=n; i++){
  47.         for(j=1; j<=m; j++) {
  48.             c[i][j] = a[i][j] + max(c[i-1][j],c[i][j-1]);
  49.         }
  50.     }
  51.     g<<c[n][m];
  52.     f.close();
  53.     g.close();
  54.     return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement