这道题我先读错了题,然后又是推错了方程。。。额。。智商捉急啊。。。。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
char str[320],dic[620][40];
int w,l;
int main()
{
int i,j,t1,t2;
int d[320];
scanf("%d%d",&w,&l);
getchar();
scanf("%s",str);
for (i=0; i<w; i++)
scanf("%s",dic[i]);
memset(d,0,sizeof(d));
d[0]=0;
for (i=1; i<=l; i++)
{
d[i]=d[i-1]+1;
for (j=0; j<w; j++)
{
t1=strlen(dic[j])-1;
t2=i-1;
while (t2 >= 0 && t1 >= 0)
{
if (dic[j][t1] == str[t2])
{
t1--;
}
t2--;
}
if (t1 == -1)
{
d[i]=d[i]<d[t2+1]+i-t2-1-strlen(dic[j])?d[i]:d[t2+1]+i-t2-1-strlen(dic[j]);
}
}
}
printf("%d\n",d[l]);
}