会员
周边
众包
新闻
博问
闪存
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
Firecoder
博客园
首页
新随笔
联系
订阅
管理
poj 3267 The Cow Lexicon(动规)
http://poj.org/problem?id=3267
#include "stdio.h" #include "iostream" #include "string.h" using namespace std; char dict[610][30]; //the cows' dictionary char seq[310]; //the received message int dp[310]; int min(int a, int b) { return a < b ? a : b; } int main() { int n, L, i, j, k, u; while(scanf("%d%d", &n, &L) != EOF) { scanf("%s", seq + 1); for(i = 1; i <= n; i++) cin >> dict[i] + 1; dp[L + 1] = 0; for(i = L; i > 0; i--) { dp[i] = 1e9; for(j = 1; j <= n; j++) { int temp = 0; //记录i--u间删除的字符个数 for(k = 1, u = i; dict[j][k] && seq[u]; u++) if(dict[j][k] == seq[u]) k++; else temp++; if(!dict[j][k]) //取3种情况中最小的 dp[i] = min(min(dp[i + 1] + 1, dp[i]), dp[u] + temp); else dp[i] = min(dp[i + 1] + 1, dp[i]); } } cout << dp[1] << endl; } return 0; }
posted @
2011-08-04 11:59
Firecoder
阅读(
128
) 评论(
0
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部
公告