POJ 3267 The Cow Lexicon
2011-05-18 15:25
471 查看
定义状态:d[i]表示从i位置开始删除最少的字符使字符串可用所给的单词表示。状态转移方程:d[i] = min{d[i], d[i +1] + 1, d[s] + s - i - le},其中d[i]为len - i, d[i + 1] + 1表示当前字符删除后的最优值,d[s] + s - i - j表示从当前位置匹配单词X后的最优值, s为匹配单词X后i的位置,le为X的长度,s - i - j表示匹配单词X需要删除字符的个数。
程序代码:
程序代码:
#include <iostream> #include <cstring> #include <cstdio> using namespace std; char sour[310], dic[610][30]; int d[310]; int len, w, l; int dp(int i) { int &ans = d[i]; if(ans != -1) return ans; ans = len - i; ans = min(ans, dp(i + 1) + 1); for(int k = 0, j, s; k < w; k++){ if(dic[k][0] == sour[i]){ int le = strlen(dic[k]); for(j = 1, s = i + 1; j < le;){ if(sour[s] == dic[k][j]) j++; s++; } if(j >= le) ans = min(ans, dp(s) + s - i - j); } } return ans; } int main() { freopen("input.txt", "r", stdin); scanf("%d %d", &w, &l); scanf("%s", sour); for(int i = 0; i < w; i++) scanf("%s", dic[i]); memset(d, -1, sizeof(d)); len = strlen(sour); printf("%d/n", dp(0)); return 0; }
相关文章推荐
- POJ 3267 The Cow Lexicon
- POJ_3267_The Cow Lexicon_动态规划
- POJ 3267 The Cow Lexicon
- poj 3267 The Cow Lexicon(dp)
- POJ-3267 The Cow Lexicon DP
- poj 3267 The Cow Lexicon DP 动态规划
- POJ 3267 - The Cow Lexicon (dp)
- POJ 3267 The Cow Lexicon
- POJ 3267 The Cow Lexicon
- POJ 3267.The Cow Lexicon
- POJ 3267 The Cow Lexicon( DP~去掉最少字符)
- POJ 3267 The Cow Lexicon 简单dp
- 【POJ 3267】 The Cow Lexicon
- POJ-3267 The Cow Lexicon 简单DP
- poj 3267 The Cow Lexicon (dp)
- poj 3267 The Cow Lexicon
- poj 3267 The Cow Lexicon (DP)
- poj_3267 The Cow Lexicon(dp)
- poj 3267 The Cow Lexicon dp
- POJ 3267-The Cow Lexicon 动态规划