描述

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

输入格式

第一行,一个字符串。(字符串的长度不超过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 = 31,Sed = 131,mod = 70177,Mod = 92311;
int n,m,dp[205];
string a[205],s;
vector<int> h[mod];
int main(){cin>>s>>n;for(int i = 1;i <= n;i++){cin>>a[i];int hash = 0,Hash = 0;for(int j = 0;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 = 1;i <= m;i++) dp[i] = 999;for(int i = 1;i <= m;i++){for(int j = i;j >= 1;j--){int hash = 0,Hash = 0;for(int k = j - 1;k <= i - 1;k++){hash = (hash * sed + s[k]) % mod;Hash = (Hash * Sed + s[k]) % Mod;}bool ok = false;for(int k = 0;k < h[hash].size();k++){if(h[hash][k] == Hash){ok = true;break;}}if(ok) dp[i] = min(dp[i],dp[j-1] + 1);}}cout<<dp[m];return 0;
}

转载于:https://www.cnblogs.com/hyfer/p/5791414.html

tyvj1102 单词的划分相关推荐

  1. codevs 1779 单词的划分

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

  2. [NOIP2001] 统计单词个数

    题目描述 给出一个长度不超过200的由小写英文字母组成的字母串(该字串以每行 20个字母的方式输入,且保证每行一定为 20个).要求将此字母串分成 k 份,且每份中包含的单词个数加起来总数最大. 每份 ...

  3. 七年级下册英语书电子版外研版单词

    外研版七年级上册英语单词表 . 外研七上词汇表Module1*meetv.认识,遇见*firstadj.第一*Englishn.英语lessonn.(一节)课classn.班级*studentn.学生 ...

  4. 汉语是世界上唯一一种面向对象的高级语言

    2019独角兽企业重金招聘Python工程师标准>>> 在 网上看到过很多有关汉语和英语比较的文章,他们写的都很不错,并且列举了大量的事例 来证明汉语或者英语是优秀的. 不过,我想用 ...

  5. keras cnn注意力机制_从发展历史视角解析Transformer:从全连接CNN到Transformer

    编译 | bluemin校对 | 陈彩娴Transformer架构在机器学习领域(尤其是NLP里)是一项热门研究,为我们带来了许多重要成果,比如:GPT-2.GPT-3等写稿机器人:第一代GPT及其性 ...

  6. 计算机主板等级指标,转载一篇主板文章,教你认识三大厂主板分级

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 华硕rog主板和tuf主板这两个分级有什么区别?一文看懂 来源:科技新闻网 技嘉和微星已经在前两篇讲到了,技嘉的主板自成一系的分级,整体可以看成3个级别, ...

  7. elasticsearch索引和映射

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

  8. 【搜索引擎】全文索引数据结构和算法

    最近一直在研究sphinx的工作机制,在[搜索引擎]Sphinx的介绍和原理探索简单地介绍了其工作原理之后,还有很多问题没有弄懂,比如底层的数据结构和算法,于是更进一步地从数据结构层面了解其工作原理. ...

  9. linux-2-wc-od-du-df-文件目录磁盘使用情况查看

    wc 获取文本文件有多少行,有多少个单词 wc 文件名 结果 行数 单词个数 字节数 >试一试wc 分析下面的情况 2行 2个单词 23个字符 为什么? >再练一个 >小结 wc 单 ...

最新文章

  1. nacos 集群_Nacos 常见问题及解决方法
  2. MPEG2-TS的小结 [1]
  3. Webservice soap wsdl区别之个人见解
  4. 划分子网和构造超网的学习
  5. PYTHON 函数的返回值
  6. 转载:工程师笔记|STM32F030在低温下无法启动
  7. 基本系统设备感叹号_win7系统网络图标显示感叹号的问题
  8. 如何配置Ubuntu17的软件库(sortware update)
  9. sandisk主控量产工具_[转载]群联PS3109主控固态硬盘修复教程_固态修复案例方法...
  10. python读取excel文件数据并且画折线图(入门级)
  11. 产品经理:一个商业 AIoT 智能硬件产品的完整拆解
  12. 打印和显示的字体种类
  13. cadence 通孔焊盘_【精品】PCB设计软件allegro不规则带通孔焊盘的制作
  14. 噩梦的开始:动态规划之背包问题(01背包问题、完全背包问题、方案数填满型背包问题)
  15. 自动控制原理9.1---线性系统的状态空间描述(中上)
  16. 递归实现全排列(python)
  17. 等级保护测评备案业务中十个常见问题解答
  18. 基于Android实现的小型在线订餐APP饿了么
  19. c4droid教程_Android教程:进入DROID世界
  20. Mybatis逆向工程_使用maven

热门文章

  1. (9) hibernate加载持久化对象的两种方式——get、load
  2. java面试题十七 switch使用范围
  3. 网易有道押注教育智能硬件,蓝海市场还能维持多久?
  4. 《白帽子将Web安全》摘抄
  5. windows下利用_popen,_wopen创建管道进行系统命令输出数据
  6. 【Numpy学习记录】np.cov详解
  7. Python下调用Linux的Shell命令
  8. Scala入门到精通——第二十二节 高级类型 (一)
  9. Java 异步编程:从 Future 到 Loom
  10. Https原理及流程