/*
* TYVJ-1102
* mike-w
* 2012-9-29
*************************************
* 国庆假期来啦!
*************************************
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAXL 111
#define MAXN 111
#define INF 999999
int opt[MAXL], ll[MAXN];
char f[MAXN][MAXL];
char s[MAXL];
int n, sl;
int min(int e1, int e2)
{
return e1>e2?e2:e1;
}
int main(void)
{
int i, j;
scanf("%s", s);
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%s", f[i]);
for(i=0; i<n; i++)
ll[i]=strlen(f[i]);
sl=strlen(s);
for(i=sl-1; i>=0; i--)
for(j=0; j<n; j++)
if(!strncmp(s+i, f[j], ll[j]))
{
if(opt[i])
opt[i]=min(opt[i], opt[i+ll[j]]+1);
else
opt[i]=opt[i+ll[j]]+1;
}
else if(!opt[i])
opt[i]=opt[i-1];
printf("%d\n", opt[0]);
return 0;
}
[TYVJ-1102] DP
最新推荐文章于 2018-08-30 23:24:57 发布