分享到plurk 分享到twitter 分享到facebook

[UVa] 11151 - Longest Palindrome

網址

http://uva.onlinejudge.org/external/111/11151.html

題目概述

給予一個字串(可為空字串),求出移除部份字元後,可得的最大迴文(Palindrome)

Technique details

第一行為測試資料數量 T (<=60)

接著 T 行字串,長度不超過 1000 , 90% 的測試資料長度小於等於 255

輸入格式

::

2 ADAM MADAM

輸出格式

::

3 5

解題思路

字串中第 nm 字移除掉部份字串後最長迴文可為下列三項的最大值

  • n+1m 字的最長迴文
  • nm-1 字的最長迴文
  • n+1m-1 字的最長迴文 + 2,若第 n , m 字相同

DP 式可寫為::

dp[n][m] = max(dp[n+1][m], dp[n][m-1])
if(str[n] == str[m])
    dp[n][m] = max(dp[n][m], dp[n+1][m-1] + 2)

n, m 相同時,最長迴文為 1

n, m 差一時,兩字相同為 2,相異為 1