您的位置:首页 > Web前端

【动态规划】bzoj1633 [Usaco2007 Feb]The Cow Lexicon 牛的词典

2015-05-14 17:13 323 查看
f[i]=min{f[i+1]+1,f[i+len[j]+cant]+cant}(for i=L-1 downto 0)(1<=j<=w)

#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
int n,m;
string s,words[601];
int f[302];
int main()
{
scanf("%d%d",&n,&m);
cin>>s;
for(int i=1;i<=n;++i) cin>>words[i];
for(int i=m-1;i>=0;--i)
{
f[i]=f[i+1]+1;
for(int j=1;j<=n;++j)
{
int now=0,cant=0;
for(int k=i;k<m;++k)
{
if(words[j][now]==s[k]) ++now;
else ++cant;
if(now==words[j].length())
break;
}
if(now==words[j].length())
f[i]=min(f[i],f[i+cant+now]+cant);
}
}
cout<<f[0]<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: