Advertisement
MinhNGUYEN2k4

Untitled

Dec 27th, 2020
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.57 KB | None | 0 0
  1. Đặt f(i, j) = độ dài dãy B lớn nhất, nếu 2 phần tử cuối là A(i) và A(j).
  2.  
  3. Để tính f(i, j), ta xét các k < i mà A(j)= A(i)+ A(k), rồi lấy f(k, i)+1 cập nhật cho f(i, j).
  4.  
  5. Giải thích: từ dãy B kết thúc ở k và i, ta có thể nới rộng dãy B thêm phần tử j.
  6.  
  7. for(int i = 0; i < n; i++)
  8.     for(int j = i+1; j < n; j++) {
  9.         f[i][j] = 2;
  10.         for(int k = 0; k < i; k++) {
  11.             if (a[k] + a[i] == a[j])
  12.                 f[i][j] = max(f[i][j], f[k][i] + 1);
  13.         }
  14.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement