首页 技术 正文
技术 2022年11月17日
0 收藏 572 点赞 2,591 浏览 1916 个字

The Cow Lexicon

Time Limit: 2000MS Memory Limit: 65536K

Total Submissions: 8815 Accepted: 4162

Description

Few know that the cows have their own dictionary with W (1 ≤ W ≤ 600) words, each containing no more 25 of the characters ‘a’..’z’. Their cowmunication system, based on mooing, is not very accurate; sometimes they hear words that do not make any sense. For instance, Bessie once received a message that said “browndcodw”. As it turns out, the intended message was “browncow” and the two letter “d”s were noise from other parts of the barnyard.

The cows want you to help them decipher a received message (also containing only characters in the range ‘a’..’z’) of length L (2 ≤ L ≤ 300) characters that is a bit garbled. In particular, they know that the message has some extra letters, and they want you to determine the smallest number of letters that must be removed to make the message a sequence of words from the dictionary.

Input

Line 1: Two space-separated integers, respectively: W and L

Line 2: L characters (followed by a newline, of course): the received message

Lines 3..W+2: The cows’ dictionary, one word per line

Output

Line 1: a single integer that is the smallest number of characters that need to be removed to make the message a sequence of dictionary words.

Sample Input

6 10

browndcodw

cow

milk

white

black

brown

farmer

Sample Output

2

Source

USACO 2007 February Silver

求主串与字典之间匹配要删除的字符数

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <queue>
#include <algorithm>
#define LL long long
using namespace std;const int INF = 0x3f3f3f3f;const int MAX = 20001;int dp[400];//记录从i到L之间要匹配字典要删除的字符数目char s[400];char str[650][400];int len[650];int main()
{
int n,L;
while(~scanf("%d %d",&n,&L))
{
scanf("%s",s);
for(int i=0;i<n;i++)
{
scanf("%s",str[i]);
len[i]=strlen(str[i]);
}
memset(dp,0,sizeof(dp));
for(int i=L-1;i>=0;i--)
{
dp[i]=dp[i+1]+1;//最坏的情况,将字符删除
for(int j=0;j<n;j++)//将i到L之间的字符与字典进行匹配
{
if(str[j][0]==s[i]&&i+len[j]<=L)
{
int ss=i;
int t=0;
while(ss<L)
{
if(str[j][t]==s[ss++])
{
t++;
}
if(t==len[j])//如果能够匹配,计算最小值
{
dp[i]=min(dp[i],dp[ss]+ss-i-len[j]);//对于ss,ss到L之间的匹配是已经算出来了,dp[ss]+ss-i-len[j]表示i到L之间匹配要删除的字符数,求最小值
break;
}
}
}
}
}
printf("%d\n",dp[0]);
} return 0;
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,085
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,560
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,409
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,182
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,819
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,902