zzzzzfzzzzz abcdefedcba abababababab cdcdcdcdcdcd
6 7
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <string>
#include <map>
#include <stack>
#include <vector>
#include <set>
#include <queue>
#define maxn 105
#define MAXN 100005
#define mod 100000000
#define INF 0x3f3f3f3f
#define pi acos(-1.0)
#define eps 1e-6
typedef long long ll;
using namespace std;
int n,m,ans,cnt,tot;
char s1[maxn],s2[maxn];
int dp[maxn][maxn],res[maxn];
int main()
{
int i,j,t,k,len;
while(~scanf("%s%s",s1+1,s2+1))
{
memset(dp,0,sizeof(dp));
n=strlen(s1+1);
for(i=1;i<=n;i++)
{
dp[i][i]=1;
}
for(len=2;len<=n;len++)
{
for(i=1;i<=n;i++)
{
j=i+len-1;
if(j>n) break ;
dp[i][j]=dp[i][j-1]+1;
for(k=i;k<j;k++)
{
if(s2[k]==s2[j]) dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j-1]);
}
}
}
for(i=1;i<=n;i++)
{
res[i]=dp[1][i];
}
for(i=1;i<=n;i++)
{
if(s1[i]==s2[i]) res[i]=res[i-1];
else
{
for(j=1;j<i;j++)
{
res[i]=min(res[i],res[j]+dp[j+1][i]);
}
}
}
printf("%d\n",res[n]);
}
return 0;
}
hdu 2476 String painter,布布扣,bubuko.com
原文:http://blog.csdn.net/tobewhatyouwanttobe/article/details/36929199