The Cow Lexicon
Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 8252   Accepted: 3888

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

  1. 6 10
  2. browndcodw
  3. cow
  4. milk
  5. white
  6. black
  7. brown
  8. farmer

Sample Output

  1. 2
  1. 题意: 给一串无规律字符串,然后给出一个字典,如今要求把上述字符串变成字典中的单词,能够删除任何位置的字符串,求最小删除个数。
  1. dp:能够逆推 ,设dp[i]表示为以第i个字符为起点。然后把从i-L区间内的字符串变成合法所须要的最小删除个数。所以倒着推dp[i]有两种情况 1.删除第i个字符; 2 不删除。
  1. dp[i]= min(dp[i+1]+1 ,dp[k]+d (从i開始往后和字典里的每一个单词匹配,d表示匹配成功后所需删除的个数 k表示匹配成功后下一已匹配状态))
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <cstring>
  4. #include <cstdlib>
  5. #include <string>
  6. #include <cctype>
  7. #include <vector>
  8. #include <cstdio>
  9. #include <cmath>
  10. #include <queue>
  11. #include <stack>
  12. #include <map>
  13. #include <set>
  14. #define ll long long
  15. #define maxn 116
  16. #define pp pair<int,int>
  17. #define INF 0x3f3f3f3f
  18. #define max(x,y) ( ((x) > (y)) ?
  19. (x) : (y) )
  20. #define min(x,y) ( ((x) > (y)) ? (y) : (x) )
  21. using namespace std;
  22. int n,m,dp[310];
  23. char s[310],dic[610][310];
  24. void solve()
  25. {
  26. 	dp[m]=0;
  27. 	for(int i=m-1;i>=0;i--)
  28. 	{
  29. 		dp[i]=dp[i+1]+1;
  30. 		for(int j=0;j<n;j++)
  31. 		{
  32. 			if(strlen(dic[j])<=m-i)
  33. 			{
  34. 				int k=0,t=i;
  35. 				while(t<m&&k<strlen(dic[j]))
  36. 				{
  37. 					if(s[t]==dic[j][k])
  38. 					{
  39. 						++t;
  40. 						++k;
  41. 					}
  42. 					else
  43. 					++t;
  44. 				}
  45. 				if(k==strlen(dic[j]))
  46. 					dp[i]=min(dp[i],dp[t]+t-i-strlen(dic[j]));
  47. 			}
  48. 		}
  49. 	}
  50. 	printf("%d\n",dp[0]);
  51. }
  52. int main()
  53. {
  54. 	while(~scanf("%d%d",&n,&m))
  55. 	{
  56. 		scanf("%s",s);
  57. 		for(int i=0;i<n;i++)
  58. 			scanf("%s",dic[i]);
  59. 		solve();
  60. 	}
  61. 	return 0;
  62. }

POJ 3267-The Cow Lexicon(DP)的更多相关文章

  1. POJ 3267 The Cow Lexicon

    又见面了,还是原来的配方,还是熟悉的DP....直接秒了... The Cow Lexicon Time Limit: 2000MS Memory Limit: 65536K Total Submis ...

  2. poj 3267 The Cow Lexicon (动态规划)

    The Cow Lexicon Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8167   Accepted: 3845 D ...

  3. POJ 3267 The Cow Lexicon 简单DP

    题目链接: http://poj.org/problem?id=3267 从后往前遍历,dp[i]表示第i个字符到最后一个字符删除的字符个数. 状态转移方程为: dp[i] = dp[i+1] + 1 ...

  4. poj 3267 The Cow Lexicon(dp)

    题目:http://poj.org/problem?id=3267 题意:给定一个字符串,又给n个单词,求最少删除字符串里几个字母,能匹配到n个单词里 #include <iostream> ...

  5. POJ - 3267 The Cow Lexicon(动态规划)

    https://vjudge.net/problem/POJ-3267 题意 给一个长度为L的字符串,以及有W个单词的词典.问最少需要从主串中删除几个字母,使其可以由词典的单词组成. 分析 状态设置很 ...

  6. POJ3267 The Cow Lexicon(DP+删词)

    The Cow Lexicon Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9041   Accepted: 4293 D ...

  7. poj3267--The Cow Lexicon(dp:字符串组合)

    The Cow Lexicon Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8211   Accepted: 3864 D ...

  8. The Cow Lexicon(dp)

    Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7290   Accepted: 3409 Description Few k ...

  9. USACO 2007 February Silver The Cow Lexicon /// DP oj24258

    题目大意: 输入w,l: w是接下来的字典内的单词个数,l为目标字符串长度 输入目标字符串 接下来w行,输入字典内的各个单词 输出目标字符串最少删除多少个字母就能变成只由字典内的单词组成的字符串 Sa ...

随机推荐

  1. tomcat下部署activemq(转)

    转自:http://marshal.easymorse.com/archives/1414 activemq可以单独部署和执行,比如类似ActiveMQ的最简单应用中提到的安装和执行方式.但是有时候需 ...

  2. asp.net 生成xml文件 与 asp生成xml文件

    一.asp.net 生成xml文件 webservice方式,调用接口: public XmlDocument List() { XmlDocument doc = new XmlDocument() ...

  3. Restful 和 Jersey介绍(Web Service )

    一:REST简单介绍 REST 2000 年由 Roy Fielding 在博士论文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之中的一个. REST 中最重要的概念是资源(reso ...

  4. ASP.NET - 记住滚动条的位置

    MaintainScrollPositionOnPostback ="true" 如果是滚动条在最下面,那么如果刷新页面,滚动条回到最上面. 使用这个属性之后,滚动条会在刷新之前的 ...

  5. SQL注入(一)普通型注入

    既然说了从头开始,先从注入开始吧,先来温习一下之前会的一些注入. PHP注入 0x01: 判断是否存在注入: '   报错 ' and 1=1   正确 ' and 1=2   错误 0x01: or ...

  6. 基于visual Studio2013解决C语言竞赛题之1051数的顺序

       题目 解决代码及点评 /* 功能:自然数N一般写成如下形式: N=d[k]d[k-1]d[1] (d[1]-d[k] 均是十进制数字) 如果d[i+1]>d[i] (i=k-1 ...

  7. HDU 3397 Sequence operation(线段树)

    HDU 3397 Sequence operation 题目链接 题意:给定一个01序列,有5种操作 0 a b [a.b]区间置为0 1 a b [a,b]区间置为1 2 a b [a,b]区间0变 ...

  8. Get Cordova Ready for Grunt and CoffeeScript

    Cordova, Grunt and Coffee You may reference to below if you deside to work with coffee instead of Ja ...

  9. Sencha Touch 2 在MAC下详细的开发流程

    在不久的将来我相信Web App会流行的非常广, 能看到未来才能主宰未来.对于我们开发人员来说我觉得想成就一件伟大的事情,需要过硬的技术和好的想法,再加上决不放弃的精神,一定可以成功的. 以下在Mac ...

  10. 透神器ngrok

    内网穿透神器ngrok 相信做Web开发的同学们,经常会遇到需要将本地部署的Web应用能够让公网环境直接访问到的情况,例如微信应用调试.支付宝接口调试等.这个时候,一个叫ngrok的神器可能会帮到你, ...