POJ - 3267 The Cow Lexicon
2013-11-22 20:51
483 查看
题意:求最少将母串删除几个,使得由字典里字符串连接起来,刚开始是想用dp[i]表示母串前i个有字典里的字符串其中一个组成的最小删除个数,但这明显要从字典里面最短的开始表示啊,那之前的就无法考虑了,所以从后面开始考虑,用dp[i]表示从i到母串末由字典里的字符串组成的最少删除个数,那么每次的i最坏的情况就是删了,不然就枚举字典里的字符串,找出最小的删除个数,删除的个数计算也很容易
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 605; int dp[MAXN]; char s[MAXN],dit[MAXN][30]; int w,l; int main(){ while (scanf("%d%d%*c",&w,&l) != EOF){ scanf("%s",s); for (int i = 1; i <= w; i++) scanf("%s",dit[i]); for (int i = 0; i < l; i++) dp[i] = l; dp[l] = 0; for (int i = l-1; i >= 0; i--){ dp[i] = dp[i+1] + 1; for (int j = 1; j <= w; j++){ int n = strlen(dit[j]); if (dit[j][0] == s[i] && n <= l-i){ int k,t = 0; for (k = i; k < l; k++) if (s[k] == dit[j][t]) if (++t == n) break; if (k < l) dp[i] = min(dp[i],dp[k+1]+k-i+1-n); } } } printf("%d\n",dp[0]); } return 0; }
相关文章推荐
- nyoj-37-回文字符串
- 结构体的强制类型转化(android中的代码问题)
- hadoop安装过程出现Incompatible namespaceIDs 错误解决方案
- 关于SVN 目录结构
- 调用JavaScript函数易错点
- Letter Game
- 2013第47周五抱怨负能量
- Maven的配置文件pom.xml
- 道德经全文 镇楼
- 安卓基础学习_应用的界面编程
- PCB中的过孔
- 微信公众平台开发介绍(三)
- Hibernate 注解 字段不映射的注解
- Android开发: 通过Intent 调用Camera应用 sample code
- qt sqlite 的初步使用
- dijkstra算法
- pMock 中的一些用法...
- Java正则表达式工具类实例
- XCOde 5 的界面布局一些新特性
- Class MockTestCase