| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 35240 | Accepted: 13986 |
Description
Input
Output
Sample Input
abcfbc abfcab programming contest abcd mnp
Sample Output
4 2 0
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char a[1005],b[1005];
int dp[1005][1005];
int main()
{
int i,j;
int len1,len2;
while(~scanf("%s%s",a+1,b+1))
{
len1=strlen(a+1);
len2=strlen(b+1);
for(i=0;i<=1000;i++)
{
dp[i][0]=0;
dp[0][i]=0;
}
for(i=1;i<=len1;i++)
for(j=1;j<=len2;j++)
{
if(a[i]==b[j]) dp[i][j]=dp[i-1][j-1]+1;
else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
}
/*for(i=1;i<=len1;i++)
{
for(j=1;j<=len2;j++)
cout<<dp[i][j]<<" ";
cout<<endl;
}*/
cout<<dp[len1][len2]<<endl;
}
return 0;
}
/*
abcfbc abfcab
programming contest
abcd mnp
Ab3bd db3bA
ABCDE BBBBB
*/
| Time Limit: 3000MS | Memory Limit: 65536K | |
| Total Submissions: 49704 | Accepted: 17097 |
Description
Input
Output
Sample Input
5 Ab3bd
Sample Output
2
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char a[5005],b[5005];
int dp[2][5005]; //使用滚动数组
int main()
{
int len,i,j;
while(cin>>len)
{
scanf("%s",a+1);
//strcpy(b+1,a+1);
//strrev(b+1); //将a倒置赋值给b
for(i=1;i<=len;i++)
b[i]=a[len-i+1];
memset(dp,0,sizeof(dp));
for(i=1;i<=len;i++)
{
for(j=1;j<=len;j++)
{
if(a[i]==b[j])
dp[i%2][j]=dp[(i-1)%2][j-1]+1;
else
dp[i%2][j]=max(dp[(i-1)%2][j],dp[i%2][j-1]);
}
}
int res;
res=len-dp[len%2][len];
cout<<res<<endl;
}
return 0;
}
/*
5
Ab3bd
*/原文:http://blog.csdn.net/coraline_m/article/details/18667607