统计单词个数(codevs 1040)
给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个)。要求将此字母串分成k份(1<k<=40),且每份中包含的单词个数加起来总数最大(每份中包含的单词可以部分重叠。当选用一个单词之后,其第一个字母不能再用。例如字符串this中可包含this和is,选用this之后就不能包含th)(管理员注:这里的不能再用指的是位置,不是字母本身。比如thisis可以算做包含2个is)。
单词在给出的一个不超过6个单词的字典中。
要求输出最大的个数。
第一行为一个正整数(0<n<=5)表示有n组测试数据
每组的第一行有二个正整数(p,k)
p表示字串的行数;
k表示分为k个部分。
接下来的p行,每行均有20个字符。
再接下来有一个正整数s,表示字典中单词个数。(1<=s<=6)
接下来的s行,每行均有一个单词。
每行一个整数,分别对应每组测试数据的相应结果。
1
1 3
thisisabookyouareaoh
4
is
a
ok
sab
7
this/isabookyoua/reaoh
/*划分性DP,用五重循环写的,数据太弱了,三重循环的没写出来f[i][j][k]表示把i-j分成k份的最大值。 */ #include<cstdio> #include<iostream> #include<cstring> #include<map> #define M 210 #define N 35 using namespace std; int f[M][M][N],n,p,m; string s,ci[7]; map<string,bool> mp; void work() {scanf("%d%d",&n,&p);for(int i=1;i<=n;i++){string c;cin>>c;s+=c;}n*=20;scanf("%d",&m);for(int i=1;i<=m;){string c;cin>>c;if(!mp[c])ci[i]=c,i++,mp[c]=1;else m--;}for(int i=0;i<n;i++){string ss="";for(int j=i;j<n;j++){ss+=s[j];for(int k=1;k<=m;k++){int pos=0;while(ss.find(ci[k],pos)<M){pos=ss.find(ci[k],pos)+1;f[i][j][1]++;}}}}for(int len=1;len<=n;len++)for(int i=0;i+len-1<n;i++){int j=i+len-1;for(int p1=1;p1<=min(len,p);p1++)for(int k=i+1;k<j;k++)for(int p2=1;p2<min(p1,k-i+1);p2++){if(p1-p2<=j-k)f[i][j][p1]=max(f[i][j][p1],f[i][k][p2]+f[k+1][j][p1-p2]);}}printf("%d\n",f[0][n-1][p]); } int main() {int T;scanf("%d",&T);while(T--){memset(f,0,sizeof(f));s="";work();}return 0; }
View Code
转载于:https://www.cnblogs.com/harden/p/5879709.html
统计单词个数(codevs 1040)相关推荐
- 统计单词个数(划分型)
codevs 1040 统计单词个数 2001年NOIP全国联赛提高组 题目等级 : 黄金 Gold 题目描述 Description 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该 ...
- codevs1040统计单词个数(区间+划分型dp)
1040 统计单词个数 2001年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给出一个长度不超过2 ...
- 【codevs1040】【01NOIPTG】统计单词个数,字符串的划分DP
1040 统计单词个数 2001年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给出一个长度不超过200的 ...
- 开发可统计单词个数的Android驱动程序(2)
开发可统计单词个数的Android驱动程序(1) 五.指定与驱动相关的信息 虽然指定这些信息不是必须的,但一个完整的Linux驱动程序都会指定这些与驱动相关的信息.一般需要为Linux驱动程序指定如下 ...
- c语言编程统计单词的个数,使用c语言如何统计单词个数
使用c语言如何统计单词个数 发布时间:2020-04-21 13:58:58 来源:亿速云 阅读:207 作者:小新 使用c语言如何统计单词个数?相信有很多人都不太了解,今天小编为了让大家更加了解Go ...
- python输入一个英文句子 输出单词个数_编写程序,给出一个英文句子,统计单词个数。_学小易找答案...
[简答题]叙述pass语句的作用. [简答题]吹风机不工作,可以用万用表检测吗?在网上搜索关键词,吹风机不工作怎么办? [单选题]以下代码运行结果正确的是哪一项?() x=2 if x:print(T ...
- C语言-统计单词个数
目录 1 算法思想 2 实现1 3 实现2 1 算法思想 读取输入进来的一个字符串,统计其中单词的个数,由于每个单词字母不一样,长度不一样,所以来依靠识别单词来统计单词数是比较难的,下面观察一个字符串 ...
- python统计单词个数算法_python 统计单词个数和频次
开始学习python,习题需要统计单词个数和频次.百度找到的代码好像都有问题.自己写了一个,调试通过. 环境:python: 3.9.1 64bit : pycharm: 2020.2 电脑 wi ...
- hadoop 文本统计一个字符的个数_hadoop统计单词个数 - 卡饭网
hadoop入门之统计单词在文件中出现的个数示例 hadoop入门之统计单词在文件中出现的个数示例 Linux环境:CentOs6.4 Hadoop版本:hadoop-0.20.2 内容:统计hado ...
- C语言-输入一行英文字符串统计单词个数
C语言-输入一行英文字符串统计单词个数,单词之间以空格隔开 判断是否为单词的依据,通过一个flag标识,flag为0表示字符为空格,接下来出现不是空格,会将flag置为1 只有当flag为1且当前字符 ...
最新文章
- Evernote相关技术介绍——mysql+lucene+tomcat
- HZOJ string
- Docker将镜像上传至私有仓库
- 不断电系统的容量如何计算?
- 使用Entity Framework Core访问数据库(Oracle篇)
- java while do循环_c语言中,while 和 do while 循环的主要区别是( )
- 营销 客户旅程模板_我如何在国外找到开发人员的工作:我从营销到技术的旅程...
- html内容点击按钮自动复制,HTML页面---复制按钮的使用(包含弹层)
- String StringBuffer StringBuilder的异同
- 吴宗宪经典暴笑语录(笑不死你肯定是个异类)
- AS技巧合集「常用技巧篇」
- Python 列表(List) 的三种遍历(序号和值)方法
- effective c# 明白几个相等运算
- CSDN新版下载频道改版上线了
- tcpdf开发文档(中文翻译版)
- CSS border 属性及用border画各种图形
- 微信公众平台、微信开放平台的关系
- 金士顿 DT101 G2 8GU盘量产全过程图解(群联篇)(2)
- flutter web集成友盟统计
- 《老爸老妈浪漫史》Barney和Robin终于。。。