#include<iostream>
#include<stdio.h>
#include<string.h>
#include<cstring>
#include<algorithm>
using namespace std;
char s[700];
char word[700][30];
int dp[700];
int a,b;
void chuli(int s_p){///对每个串上的字符 对每个单词进行扫描
dp[s_p]=min(dp[s_p],dp[s_p-1]+1);
for(int i=0;i<a;i++){
if(s[s_p]==word[i][0]){
int lenth=strlen(word[i]);
int wp=0;
for(int j=s_p;j<b;j++){
if(s[j]==word[i][wp])wp++;
if(wp==lenth){
dp[j]=min(dp[j],dp[s_p-1]+j-s_p+1-lenth);
}
}
}
}
}
int main(){
//freopen("input2.txt","r",stdin);
while(scanf("%d%d",&a,&b)!=EOF){
for(int i=-1;i<b;i++){///这里是为了应付 ==0的情况
dp[i]=i+1;
}
scanf("%s",s);
for(int i=0;i<a;i++){
scanf("%s",word[i]);
}
for(int i=0;i<b;i++){
chuli(i);
}
printf("%d\n",dp[b-1]);
}
return 0;
}
poj3267 dp 154ms
猜你喜欢
转载自blog.csdn.net/qq_40675883/article/details/82694575
今日推荐
周排行