NKPALIN - Chuỗi đối xứng

Tags: dp

Problem

https://vn.spoj.com/problems/NKPALIN

https://oj.vnoi.info/problem/NKPALIN

Một chuỗi được gọi là đối xứng (palindrome) nếu như khi đọc chuỗi này từ phải sang trái cũng thu được chuỗi ban đầu.

Yêu cầu: tìm một chuỗi con đối xứng dài nhất của một chuỗi s cho trước. Chuỗi con là chuỗi thu được khi xóa đi một số ký tự từ chuỗi ban đầu.

Dữ liệu vào

Gồm một dòng duy nhất chứa chuỗi s, chỉ gồm những chữ cái in thường.

Kết qủa

Gồm một dòng duy nhất là một xâu con đối xứng dài nhất của xâu s. Nếu có nhiều kết quả, chỉ cần in ra một kết quả bất kỳ.

Giới hạn

Chuỗi s có độ dài không vượt quá 2000.

Ví dụ

**Dữ liệu mẫu**
lmevxeyzl

**Kết qủa**
level


Tutorial

Gọi F[i][j] là xâu con đối xứng dài nhất trong đoạn từ i đến j. Mảng này có thể tính bằng hai vòng for dễ.

Sau khi biết chiều dài dài nhất có thể của xâu con đối xứng (tức là F[0][size(s)-1]). Ta đệ quy tìm xâu này (dùng 4 biến i,j,L,R với i,j là hai đầu xâu s đang xét, L,R là hai đầu xâu cần tìm)


Submission

NKPALIN.cpp