描述

有一个很长的由小写字母组成字符串。为了便于对这个字符串进行分析,需要将它划分成若干个部分,每个部分称为一个单词。出于减少分析量的目的,我们希望划分出的单词数越少越好。你就是来完成这一划分工作的。

输入格式

第一行,一个字符串。(字符串的长度不超过100)
第二行一个整数n,表示单词的个数。(n<=100)
第3~n+2行,每行列出一个单词。

输出格式

一个整数,表示字符串可以被划分成的最少的单词数。

测试样例1

输入

realityour 

real 
reality 
it 
your 
our

输出

2

备注

(原字符串可拆成real+it+your或reality+our,由于reality+our仅为两个部分,因此最优解为2,另外注意,单词列表中的每个单词都可以重复使用多次,也可以不用)
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int sed = ,Sed = ,mod = ,Mod = ;
int n,m,dp[];
string a[],s;
vector<int> h[mod];
int main(){
cin>>s>>n;
for(int i = ;i <= n;i++){
cin>>a[i];
int hash = ,Hash = ;
for(int j = ;j < a[i].size();j++){
hash = (hash * sed + a[i][j]) % mod;
Hash = (Hash * Sed + a[i][j]) % Mod;
}
h[hash].push_back(Hash);
}
m = s.size();
for(int i = ;i <= m;i++) dp[i] = ;
for(int i = ;i <= m;i++){
for(int j = i;j >= ;j--){
int hash = ,Hash = ;
for(int k = j - ;k <= i - ;k++){
hash = (hash * sed + s[k]) % mod;
Hash = (Hash * Sed + s[k]) % Mod;
}
bool ok = false;
for(int k = ;k < h[hash].size();k++){
if(h[hash][k] == Hash){
ok = true;
break;
}
}
if(ok) dp[i] = min(dp[i],dp[j-] + );
}
}
cout<<dp[m];
return ;
}

tyvj1102 单词的划分的更多相关文章

  1. codevs 1779 单词的划分

    1779 单词的划分 时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description Problem有一个很长的由小写字母组成字符串.为了便于对 ...

  2. String的点点滴滴

    一.String 的 equals()到底比较的是什么?equals() 与 == 的区别? 当使用关系运算符==比较两个对象时,是比较两个对象使用的内存地址和内容是否相同,如果两个对象使用的是同一个 ...

  3. MapReduce ---- TD-IDF

    1.TF-IDF TF-IDF(term frequency/inverse document frequency) 的概念被公认为信息检索中最重要的发明.描述单个term与特定document的相关 ...

  4. 201621123050 《Java程序设计》第9周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 ①foreach循环 for (String e : map.keyS ...

  5. elasticsearch(6) 映射和分析

    类似关系型数据库中每个字段都有对应的数据类型,例如nvarchar.int.date等等,elasticsearch也会将文档中的字段映射成对应的数据类型,这一映射可以使ES自动生成的,也是可以由我们 ...

  6. OJ题解记录计划

    容错声明: ①题目选自https://acm.ecnu.edu.cn/,不再检查题目删改情况 ②所有代码仅代表个人AC提交,不保证解法无误 E0001  A+B Problem First AC: 2 ...

  7. ElasticSearch搜索介绍四

    ElasticSearch搜索 最基础的搜索: curl -XGET http://localhost:9200/_search 返回的结果为: { "took": 2, &quo ...

  8. 巨蟒python全栈开发django4:url反向解析图解&&模板渲染2

    注意:前端有aaa变量,后端没有aaa变量,存在p标签,但是显示不出来 有p标签,我们可以指定默认值,在没有其他内容的时候 过滤器有60多种,有点多,用到的时候再记和查 结果: 显示是acd 看长度 ...

  9. elasticsearch索引和映射

    目录 1. elasticsearch如何实现搜索 1.1 搜索实例 1.2 es中数据的类型 1.3 倒排索引 1.4 分析与分析器 1.4.1 什么是分析器 1.4.2 内置分析器种类 1.4.3 ...

随机推荐

  1. MultiThread

    Stephen Toub From MicroSoft Crop. Stephen Cleary It's All About the SynchronizationContext How would ...

  2. 如何读取Access里的OLE类型的图片

    身份证一类读卡器读取的照片信息,保存在Access数据库中一般为OLE型字段,图片为BMP格式,因为是用其读卡器写入的,其数据类型为常二进制数据. 再用报表或EXCEL读取这些图片时,如果将该图片字段 ...

  3. WinCE项目应用汇总

    虚拟仪器(VI) RM905a+医用放射性核素活度计 RM905a+活度计远程检定方法研究 车载导航

  4. java环境变量详细配置步骤

    1 下载jdk. a 官网:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 本来 ...

  5. 大三上 —— IOS五天实训

    第二天: 注册使用xib:1.首先为xib文件创建对象--let nib = UINib(nibName: "xib文件名", bundle: nil).2.具体的控件注册该xib ...

  6. Centos6安装Gitlab

    安装参考 https://about.gitlab.com/downloads/ 可以从清华的镜像下载安装包, 注意区分自己用的是哪个发行版 https://mirror.tuna.tsinghua. ...

  7. Notepad++ 配置 Node.js 开发环境

    首先安装一个notepad++的插件NppExec,在Notepad++的Plugin Manager里面进行安装. 安装完后,在这个插件的菜单里面选择Execute 在对话框中输入以下的内容: if ...

  8. iOS 关于字体根据不同屏幕尺寸等比适配的问题(zz)

    http://www.jianshu.com/p/5815e81abb52 背景 去年的六月份开始了一个新的项目,此项目支持的设备从4S开始一直到6+,也就是说屏幕的尺寸最小的320x480 最大的1 ...

  9. .Net JIT

    .Net JIT(转) JIT

  10. 使用CocoaPods开发并打包静态库

    Cocoapods作为OS X和iOS开发平台的类库管理工具,已经非常完善和强大.通常我们用pod来管理第三方开源类库,但我们也极有可能会开发一个用pod管理依赖关系的静态类库给其他人使用,而又不愿意 ...