Advertisement
brospresident

suma_max_triunghi_dynamic

Nov 7th, 2018
332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.94 KB | None | 0 0
  1. #include    <iostream>
  2. #include    <fstream>
  3.  
  4. using namespace std;
  5.  
  6. ifstream f("triunghi.in");
  7. int n, a[20][20], p[20][20], S[20][20];
  8.  
  9. void input(){
  10.     f >> n;
  11.     for(int i = 1; i <= n; ++i)
  12.         for(int j = 1; j <= i; ++j) f >> a[i][j];
  13.     f.close();
  14. }
  15.  
  16. void init(){
  17.     for(int i = 1; i <= n; ++i) S[n][i] = a[n][i];
  18. }
  19.  
  20. void dynamic(){
  21.     for(int i = n-1; i >= 1; --i)
  22.     for(int j = 1; j <= i; ++j)
  23.     if(S[i+1][j] > S[i+1][j+1]){
  24.         S[i][j] = a[i][j] + S[i+1][j];
  25.         p[i][j] = 1;
  26.     }
  27.     else{
  28.         S[i][j] = a[i][j] + S[i+1][j+1];
  29.         p[i][j] = 2;
  30.     }
  31. }
  32.  
  33. void print(){
  34.     int q = 1, r = 1;
  35.     for(int i = 1, j = 1; i < n; ++i){
  36.         if(p[i][j] == 2){
  37.             r++;
  38.             j++;
  39.         }
  40.         q++;
  41.         cout << a[q][r] << "+";
  42.     }
  43.     cout << '\b' << " " << "\n";
  44. }
  45.  
  46. int main()
  47. {
  48.     input();
  49.     init();
  50.     dynamic();
  51.     print();
  52.     return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement