The Cow Lexicon

Time Limit: 2000MS

 

Memory Limit: 65536K

Total Submissions: 5719

 

Accepted: 2638

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>using namespace std;const int N = 610;int len[N], dp[N];//dp[i]表示第i个字符串最少删除的字符数char str[N], word[N][N];int L, W;int Min(int a,int b){return a < b ? a : b;}void DP(){int i, j, k, p;    memset(dp, 0, sizeof(dp));//初始化    for(i = 1; i <= L; ++i)//循环单词的长度,    {        dp[i] = dp[i - 1] + 1;for (j = 1; j <= W; ++j)        {            k = len[j] - 1;//所要匹配的单词的最后字母的位置            p = i - 1;while (k >= 0 && p >= 0)//从后向前匹配            {if (word[j][k] == str[p])                {                    k --;                }                p --;            }if (k < 0)//若k<0说明匹配成功时            {                dp[i] = Min(dp[i], dp[p + 1] + i - p - 1 - len[j]);//状态方程(i - p - 1 -len[j])第j个单词匹配成功时多余的单词数,列如browndcodw//和cow匹配时,从后向前匹配此时i = 10;匹配成功时正好匹配到codw,四个单词,而cow是三个,//所以(i - p - 1 -len[j])= 1;            }        }    }}int main(){int i;    scanf("%d%d", &W, &L);    scanf("%s", str);    memset(word, 0, sizeof(word));for (i = 1; i <= W; ++i)    {        scanf("%s", word[i]);        len[i] = strlen(word[i]);    }    DP();    printf("%d\n", dp[L]);return 0;}

转载于:https://www.cnblogs.com/lidaojian/archive/2012/03/07/2384133.html

POJ 3267 The Cow Lexicon(动态规划)相关推荐

  1. POJ 3267 The Cow Lexicon

    题意:就是给出一个主串,和一本字典,问最少在主串删除多少字母,可以使其匹配到字典的单词序列. PS:是匹配单词序列,而不是一个单词. f[i]表示从message中第i个字符开始,到第L个字符(结尾处 ...

  2. POJ 3267为什么优先队列超时,DP就能过,难过

    The Cow Lexicon Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 11846 Accepted: 5693 Desc ...

  3. POJ 3617 Best Cow Line(最佳奶牛队伍)

    POJ 3617 Best Cow Line Time Limit: 1000MS Memory Limit: 65536K [Description] [题目描述] FJ is about to t ...

  4. POJ 2018 Best Cow Fences (二分答案构造新权值 or 斜率优化)

    $ POJ~2018~Best~Cow~ Fences $(二分答案构造新权值) $ solution: $ 题目大意: 给定正整数数列 $ A $ ,求一个平均数最大的长度不小于 $ L $ 的子段 ...

  5. POJ 3268 Silver Cow Party (最短路径)

    POJ 3268 Silver Cow Party (最短路径) Description One cow from each of N farms (1 ≤ N ≤ 1000) convenientl ...

  6. 1633: [Usaco2007 Feb]The Cow Lexicon 牛的词典(DP)

    1633: [Usaco2007 Feb]The Cow Lexicon 牛的词典 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 633  Solved ...

  7. Cow Bowling POJ - 3176(基础的动态规划算法)

    题意: 杨辉三角,让从顶部开始走到底部,所经过的每一层的点数相加,使得实现最高和. 题目: The cows don't use actual bowling balls when they go b ...

  8. POJ3267The Cow Lexicon

    http://poj.org/problem?id=3267 题意 : 给你一个message,是给定字符串,然后再给你字典,让你将message与字典中的单词进行匹配,输出要删掉多少字母. 思路 : ...

  9. POJ 3268 D-Silver Cow Party

    http://poj.org/problem?id=3268 Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently ...

  10. 贪心  POJ - 3617 ​​​​​​​Best Cow Line

    Best Cow Line POJ - 3617 FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual"Farmer of ...

最新文章

  1. 从需求的角度去理解Linux系列:总线、设备和驱动
  2. 10.12 telnet:远程登录主机
  3. mysql的告警日志_MySQL Aborted connection告警日志的分析
  4. .NET C# 群发 HTML格式 带附件 中文发送者 密送 抄送 的邮件
  5. HTTP状态:202、301、304、404、503
  6. IntelliJ IDEA安装后需要必须做的一件事
  7. web端业务数据管理平台+Axure运营数据管理平台+月度数据统计分析+年度排行榜数据统计页面分析+运营大数据统计管理后台+用户信息管理+Axure通用web端高保真交互业务数据管理平台
  8. android studio的 gradle 依赖同步错误解决方法
  9. SharePoint Windows Workflow Foundation
  10. 基于Android的手机邮件收发(JavaMail)之四(邮件的发送)
  11. 调用虚拟内存编译时的error处理
  12. Android连接数据库的问题
  13. PHP代码审计工具Rips的使用
  14. 关于CS1.6中模型导出到3dsmax
  15. 依行科技日常实习面经
  16. css朗逸保险丝盒机舱,【朗逸保险盒】朗逸保险盒位置图解、拆卸方法_车主指南...
  17. Java连接打印机打印二维码
  18. Python之建模数值逼近篇–最小二乘拟合
  19. 工信部公开大数据试点名单;Canalys发布报告,三大云厂商保持领导地位;谷歌收购网络安全公司Mandiant | 每日大事件...
  20. oracle宿舍管理系统实训报告,宿舍管理系统实验报告..doc

热门文章

  1. 拓端tecdat|R语言分类回归决策树交互式修剪和更美观地可视化分析细胞图像分割数据集
  2. oracle数据库恢复aul_Oracle数据库救命恢复工具:gDUL3.0
  3. python 如何判断字典存在key
  4. Pytorch和Torchvision版本对应
  5. 利用caffe的Python接口生成prototxt文件
  6. logistic回归__基于Python和Numpy函数库
  7. 2017.8.22坐标问题
  8. python四种方法实现去除列表中的重复元素
  9. python实现 Floyd算法求解最短路径距离问题
  10. distributeed 1.21.8 requires msgpack,which is not installed 分布式1.21.8需要msgpack,未安装