1513-Palindrome(LCS)

Posted Wally的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1513-Palindrome(LCS)相关的知识,希望对你有一定的参考价值。

http://acm.hdu.edu.cn/showproblem.php?pid=1513

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string.h>
 4 #include <algorithm>
 5 using namespace std;
 6 
 7 char s1[5005],s2[5005];
 8 int dp[2][5005],n;
 9 
10 void LCS()
11 {
12     int i,j;
13     memset(dp,0,sizeof(dp));
14     for(i = 1;i<=n;i++)
15     {
16         for(j = 1;j<=n;j++)
17         {
18             int x = i%2;
19             int y = 1-x;
20             if(s1[i-1]==s2[j-1])
21             dp[x][j] = dp[y][j-1]+1;
22             else
23             dp[x][j] = max(dp[y][j],dp[x][j-1]);
24         }
25     }
26 }
27 
28 int main()
29 {
30     int i,j;
31     while(~scanf("%d",&n))
32     {
33         scanf("%s",s1);
34         for(i = 0;i<n;i++)
35         s2[i] = s1[n-1-i];
36         s2[i] = \'\\0\';
37         LCS();
38         printf("%d\\n",n-dp[n%2][n]);
39     }
40 
41     return 0;
42 }
View Code

 

以上是关于1513-Palindrome(LCS)的主要内容,如果未能解决你的问题,请参考以下文章

HDU 1513[Palindrome] 回文串

LCS(最长公共子序列)

动态规划解最长公共子序列(LCS)问题 (附可打印LCS完整代码)

最长公共子序列(LCS),求LCS长度和打印输出LCS

LCS的数量

经典问题LCS(最大公共子串问题)C代码实现