DÃY CON CHUNG KHÔNG LIỀN KỀ DÀI NHẤT - mã: LNACS - SPOJ


=======================================



Dãy C = c1, c2, ..., ck là dãy con không liền kề của dãy A = a1, a2, ..., am nếu C có thể nhận được bằng cách chọn một dãy các phần tử không liền kề của A, nghĩa là tìm dược dãy các chỉ số i1, i2, ..., ik sao cho:
1 ≤ i1, i2, ..., ik ≤ m;

i1 < i2 - 1, i2 < i3 - 1, ..., ik - 1 < ik - 1;
c1 = ai1, c2 = ai2, ck = aik.

Ta gọi độ dài của dãy số là số phần tử của nó.
Cho hai dãy:

A = a1, a2, ..., am
B = b1, b2, ..., bn

Dãy C được gọi là dãy con chung không liền kề của hai dãy A và B nếu như nó vừa là dãy con không liền kề của A, vừa là dãy con không liền kề của B.
Yêu cầu
Cho hai dãy số A và B. Hãy tìm độ dài của dãy con chung không liền kề dài nhất của hai dãy đã cho.
Dữ liệu
  • Dòng đầu tiên chứa hai số nguyên dương m và n (2 ≤ m, n ≤ 103) được ghi cách nhau bởi dấu cách, lần lượt là số lượng phần tử của dãy A và dãy B.
  • Dòng thứ i trong m dòng tiếp theo chứa số nguyên không âm ai (ai ≤ 104), i = 1, 2, ..., m.
  • Dòng thứ j trong n dòng tiếp theo chứa số nguyên không âm bj (bj ≤ 104), j = 1, 2, ..., n.
Kết quả
Ghi ra trên một dòng duy nhất độ dài của dãy con chung không liền kề dài nhất của hai dãy A và B.
Ví dụ
Input:

4 5
4
9
2
4
1
9
7
3
4

Output:
2

===============
Sử dụng Quy hoạch động
Công thức truy hồi:
F[i,j]:=F[i-2,j-2]+1 nếu A[i]=B[j]
F[i,j]:=max(F[i-1,j],F[i,j-1])
Tạo cơ sở quy hoạch động:
F[i,1]:=1 nếu A[i]=B[1] ngược lại F[i,1]:=F[i-1,1];
F[1,j]:=1 nếu A[1]=B[j] ngược lại F[1,j]:=F[1,j-1];
==============
Code: LNACS
 
CẢM ƠN CÁC BẠN ĐÃ XEM !!! ×