POJ3267 The Cow Lexicon(DP+删词)
| Time Limit: 2000MS | Memory Limit: 65536K | |
| Total Submissions: 9041 | Accepted: 4293 |
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 2: L characters (followed by a newline, of
course): the received message
Lines 3..W+2: The cows' dictionary, one
word per line
Output
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
dp[i]表示message从i位置开始需要删除几个字母
dp[i] = dp[i + 1] + 1 // 表示它在i位置并不匹配,删除i位置的字母,
dp[i] = min(dp[i],dp[i + len + t] + t) //对于长度为len的单词,从i开始需要删除t个字母才能完全匹配,i+len+t表示匹配后的下一个,dp[i+len+t]就是匹配成功下一个位置的需要删除的字母数
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
char dic[][];
char mess[ + ];
int w,l,dp[];
int DP(int x, int len, int y)
{
int j = , tot = ;
while(x <= l)
{
if(mess[x] == dic[y][j])
j++;
else
tot++;
if(j == len + ) // j==len的时候还没结束,还要匹配len位置,len是最后一个
return tot;
x++;
}
return -;
}
int main()
{
while(scanf("%d%d", &w, &l) != EOF)
{
scanf("%s", mess + );
for(int i = ; i <= w; i++)
{
scanf("%s", dic[i] + );
}
memset(dp, , sizeof(dp));
for(int i = l; i > ; i--)
{
dp[i] = dp[i + ] + ;
for(int j = ; j <= w; j++)
{
int len = strlen(dic[j] + );
int t = DP(i, len, j);
if(t != -)
{
dp[i] = min(dp[i], dp[i + len + t] + t);
}
}
}
printf("%d\n", dp[]);
}
return ;
}
POJ3267 The Cow Lexicon(DP+删词)的更多相关文章
- POJ3267 The Cow Lexicon(dp)
题目链接. 分析: dp[i]表示母串从第i位起始的后缀所对应的最少去掉字母数. dp[i] = min(dp[i+res]+res-strlen(pa[j])); 其中res 为从第 i 位开始匹配 ...
- POJ3267——The Cow Lexicon(动态规划)
The Cow Lexicon DescriptionFew know that the cows have their own dictionary with W (1 ≤ W ≤ 600) wor ...
- poj3267--The Cow Lexicon(dp:字符串组合)
The Cow Lexicon Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8211 Accepted: 3864 D ...
- POJ 3267-The Cow Lexicon(DP)
The Cow Lexicon Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8252 Accepted: 3888 D ...
- USACO 2007 February Silver The Cow Lexicon /// DP oj24258
题目大意: 输入w,l: w是接下来的字典内的单词个数,l为目标字符串长度 输入目标字符串 接下来w行,输入字典内的各个单词 输出目标字符串最少删除多少个字母就能变成只由字典内的单词组成的字符串 Sa ...
- The Cow Lexicon(dp)
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7290 Accepted: 3409 Description Few k ...
- POJ 3267:The Cow Lexicon(DP)
http://poj.org/problem?id=3267 The Cow Lexicon Time Limit: 2000MS Memory Limit: 65536K Total Submi ...
- POJ 3267:The Cow Lexicon 字符串匹配dp
The Cow Lexicon Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8905 Accepted: 4228 D ...
- BZOJ 1633: [Usaco2007 Feb]The Cow Lexicon 牛的词典
题目 1633: [Usaco2007 Feb]The Cow Lexicon 牛的词典 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 401 Solv ...
随机推荐
- springmvc源码分析(转)
该博客转载自http://www.cnblogs.com/heavenyes/p/3905844.html#特在此说明!!!!! springmvc是一个基于spring的web框架.本篇文章对它的工 ...
- 如何在Web服务器80端口上开启SSH服务
本文所讨论的网络端口复用并非指网络编程中采用SO_REUSEADDR选项的 Socket Bind 复用.它更像是一个带特定路由功能的端口转发工具,在应用层实现. 背景 笔者所处网络中防火墙只开放了一 ...
- WP老杨解迷:开发生态两极化和榜单乱象
Windows Phone 自2013年的一片浪潮推动下,2014年终于开始引起了各大小CP们的注意,于是大量的产品开始乘风破浪一路涌进Windows Phone平台,立即改变了榜单的格局,如今,苦B ...
- Linux内核
Linux内核配置.编译及Makefile简述 Hi,大家好!我是CrazyCatJack.最近在学习Linux内核的配置.编译及Makefile文件.今天总结一下学习成果,分享给大家^_^ 1.解压 ...
- C语言 百炼成钢9
//题目25:求1+2!+3!+...+20!的和 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib ...
- C#中的bitmap类和图像像素值获取方法
一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下: 1. GetP ...
- OAF中的面包屑(breadcrumbs)始无法显示(转)
原文地址:OAF中的面包屑(breadcrumbs)始无法显示 OAF中面包屑是一种重要的导航工具.可以提示用户抵达当前页面的路径,也可以方便的切换到之前的节点. 开始做面包屑开发的时候发现面包屑总是 ...
- select、poll、epoll程序实例
三个函数的基本用法如下: select 创建 fd_set rset , allset; FD_ZERO(&allset); FD_SET(listenfd, &allset); 监听 ...
- Java系列:JVM指令详解(下)(zz)
九.自增减指令 20:iconst_1 21:istore_1 22:return 指令码 助记符 ...
- GDB代码调试与使用
GDB代码调试与使用 Linux下GDB调试代码 源代码 编译生成执行文件 gcc -g test.c -o test 使用GDB调试 启动GDB:gdb test 从第一行列出源代码:list 直接 ...