#HX3222. 序列型动态规划习题五:单词的划分

提交1 通过1
通过率100%
时间限制2000ms
内存限制256MiB

题目描述

题目描述

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

给出字符串和字典,输出最少的划分单词数。

输入格式

第 1 行,1 个字符串。(字符串的长度不超过 1000)

第 2 行,1 个整数 n,表示字典中单词的个数。(n ≤ 100)

第 3 到 n+2 行,每行列出一个字典中的单词。(单词长度不超过 100)

输出格式

输出最少的划分单词数。

输入样例 #1

realityour
5
real
reality
it
your
our

输出样例 #1

2

输入样例 #2

unruledlittleness
5
unruled
littleness
it
unrule
little

输出样例 #2

2

输入样例 #3

a
3
ba
abc
a

输出样例 #3

1

提示

原字符串可拆成 real+it+your 或 reality+our,由于 reality+our 仅为两个部分,因此最优解为 2。另外注意,单词列表中的每个单词都可以重复使用多次,也可以不用。

数据范围与约定

字符串的长度不超过 1000;n ≤ 100;单词长度不超过 100。