点击打开链接题目链接
| Time Limit: 3000MS | Memory Limit: 65536K | |
| Total Submissions: 52910 | Accepted: 18248 |
Description
Input
Output
Sample Input
5 Ab3bd
Sample Output
2
说白了就是求和自己相反字符串的lcs
short可以卡过
还是老老实实写滚动数组吧
#include<cstdio>
#include<cstring>
int dp[2][5050];
char str1[5050],str2[5050];
int maxx(int a,int b)
{
return a>b?a:b;
}
int main()
{
int n,i,j;
int l;
while(scanf("%d",&n)!=EOF)
{
scanf("%s",str1+1);
for(i=1;i<=n;i++)
{
str2[n+1-i]=str1[i];
}
memset(dp,0,sizeof(dp));
int flag=1;
int xx=0;
for(i=1;i<=n;i++)
{
flag=1-flag;
for(j=1;j<=n;j++)
{
if(str1[i]==str2[j])
{
dp[flag][j]=dp[1-flag][j-1]+1;
}
else
{
dp[flag][j]=maxx(dp[flag][j-1],dp[1-flag][j]);
}
xx=maxx(xx,dp[flag][j]);
// printf("%d ",dp[flag][j]);
}
// puts("");
}
printf("%d\n",n-xx);
}
}
poj 1159 Palindrome lcs+滚动数组,布布扣,bubuko.com
原文地址:http://blog.csdn.net/qq_16843991/article/details/38702271