51Nod 1092 回文字符串 | 最长公共子序列变形

时间:2023-03-08 17:56:03
51Nod 1092 回文字符串 | 最长公共子序列变形

51Nod 1092 回文字符串 | 最长公共子序列变形

求字符串和其逆的最长公共子序列,需要添加的字符数就为长度-最长公共子序列长

#include "stdio.h"
#include "string.h"
#define maxn 1005
char s[maxn],s1[maxn];
int dp[maxn][maxn];
int main()
{
int n=,i,j,len;
scanf("%s",s);
len=strlen(s);
strcpy(s1,s);
strrev(s1);
for(i=;i<len;i++)
{
for(j=;j<len;j++)
{
if(s[i]==s1[j])
dp[i+][j+]=dp[i][j]+;
else
dp[i+][j+]=dp[i+][j]>dp[i][j+]?dp[i+][j]:dp[i][j+];
}
}
printf("%d\n",len-dp[len][len]);
}