动态规划训练6 [统计单词个数]
来源:互联网 发布:淘宝皇冠店铺大全 编辑:程序博客网 时间:2024/06/06 05:10
【问题描述】
给出一个长度不超过 200 的由小写英文字母组成的字母串(约定:该字母串以每行20 个字母的方式输
入,且保证每行一定为 20 个)。要求将此字母串分成k 份(1<k<=40),且每份中包含的单词个数加起来总数
最大(每份中包含的单词可以部分重叠。当选用一个单词之后,其第一个字母不能再用。例如字符串this
中可包含 this 和 is,选用this 之后就不能包含 th)。
单词在给出的一个不超过 6 个单词的字典中。要求输出最大的个数。
【输入文件】
输入数据放在文本文件 input3.dat 中,其格式如下:
每组的第一行有二个正整数(p, k), p表示字串的行数; k 表示分为 k 个部分。
接下来的 p 行,每行均有 20 个字符。
再接下来有一个正整数 s,表示字典中单词个数。(1<=s<=6)
接下来的 s 行,每行均有一个单词。
【输出文件】
结果输出至屏幕,每行一个整数,分别对应每组测试数据的相应结果。
【输入样例】
1 3
thisisabookyouareaoh
4
is
a
ok
sab
【输出样例】
给出一个长度不超过 200 的由小写英文字母组成的字母串(约定:该字母串以每行20 个字母的方式输
入,且保证每行一定为 20 个)。要求将此字母串分成k 份(1<k<=40),且每份中包含的单词个数加起来总数
最大(每份中包含的单词可以部分重叠。当选用一个单词之后,其第一个字母不能再用。例如字符串this
中可包含 this 和 is,选用this 之后就不能包含 th)。
单词在给出的一个不超过 6 个单词的字典中。要求输出最大的个数。
【输入文件】
输入数据放在文本文件 input3.dat 中,其格式如下:
每组的第一行有二个正整数(p, k), p表示字串的行数; k 表示分为 k 个部分。
接下来的 p 行,每行均有 20 个字符。
再接下来有一个正整数 s,表示字典中单词个数。(1<=s<=6)
接下来的 s 行,每行均有一个单词。
【输出文件】
结果输出至屏幕,每行一个整数,分别对应每组测试数据的相应结果。
【输入样例】
1 3
thisisabookyouareaoh
4
is
a
ok
sab
【输出样例】
7
思路:
比较明显的动态规划问题,我们这样定义子结构,opt[i][j]表示把S[1...i]序列划分成j分,每份中所包含的单词数之和的最大值。那么状态转移方程就是:
opt[i][j] = max{opt[k][j-1] + sum[k+1][i]}
其中sum[i][j]表示序列[i...j]中所包含的单词的数量,这个数组可以用下面的方法来求。
sum[i][j] = sum[i+1][j] + 1,其中S[i...j]中包含以S[i]开头的单词
如果不包含的话直接有sum[i][j] = sum[i+1][j]
阅读全文
0 0
- 动态规划训练6 [统计单词个数]
- noip2001 统计单词个数 (动态规划-划分)
- 【NOIP2001提高组T3】统计单词个数-字符串上的动态规划
- Vijos P1118 统计单词个数(动态规划,划分型DP,字符串)
- vc 统计单词个数
- 统计单词个数
- 统计单词个数
- 统计单词个数
- 统计单词个数
- 统计单词个数
- 统计单词个数
- 状态机统计单词个数
- wikioi1040 统计单词个数
- C统计单词个数
- 统计不同单词个数
- 统计单词个数
- acm-统计单词个数
- 17.2统计单词个数
- ssh 整合出现的问题
- java读取.properties配置文件的几种方法
- 记一次mavne添加外部jar问题。
- 剑指Offer——二叉搜索树转换为双向链表
- ServletContext作用功能详解
- 动态规划训练6 [统计单词个数]
- 事件DOMContentLoaded和load的区别
- Android 在应用中跳转到另一个应用中的方法
- java总结
- selenium base_page取元素判断元素
- CentOS6.5下Nginx1.7.4安装记录
- 使用rem的几个注意事项
- 《2017 汉字基因字典》
- 量化进阶——理工科出身如何转做量化交易(二)