日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

The Cow Lexicon(POJ-3267)

發布時間:2025/3/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 The Cow Lexicon(POJ-3267) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Problem 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

題意:給出一個長度為l的字符串,與w個詞,問最少刪掉字符串中的幾個字母后可使字符串全部由所給的單詞組成。

思路:

用 f[i]=n 來表示字符串刪掉n個字母后剩下的串可由單詞構成,易得:

若不存在單詞可以與字符串str中str[i]開頭的字符串匹配,則有:f[i]=f[i+1]+1

若存在單詞可以匹配,且str[t-1]為可以匹配的字符串的最后一個字符,匹配的單詞的長度為n,則有:f[i]=min(f[i+1]+1,f[t]+t-i-n)

Source Program

#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<string> #include<cstdlib> #include<queue> #include<set> #include<vector> #define INF 0x3f3f3f3f #define PI acos(-1.0) #define N 1001 #define MOD 123 #define E 1e-6 using namespace std; string str; string word[N]; int f[N]; int main() {int w,l;scanf("%d%d",&w,&l);cin>>str;for(int i=0;i<w;i++)cin>>word[i];f[l]=0;for(int i=l-1;i>=0;i--){f[i]=f[i+1]+1;for(int j=0;j<w;j++){if(word[j].length()<=l-i && word[j].at(0)==str[i])//當第j個單詞的首字母與字符串中匹配時{int t=i;int n=0;while(t<l){if(word[j].at(n)==str[t++])//匹配單詞第n個字母是否與字符串匹配n++;if(n==word[j].length()){f[i]=min(f[t]+t-i-n,f[i]);break;}}}}}printf("%d\n",f[0]); }

?

總結

以上是生活随笔為你收集整理的The Cow Lexicon(POJ-3267)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。