zoukankan      html  css  js  c++  java
  • poj 3267 dp

    题意:
    问母串中至少去掉多少个字母才能是刚好由单词表中的一些单词连接而成的。
    分析:
    dp,f[i]表示母串从第i位起始的后缀所对应的最少去掉字母数。
    f[i]有两种选择f[i + 1] + 1或者f[i + num] + num - strlen(word[j])。其中num是从第i位开始匹配word[j]所需要的母串从i位起始的后缀的前缀的长度。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    const int N=300+9;
    int W,L;
    char s[N],w[N<<1][30];
    int f[N];
    int main()
    {
        //freopen("f.txt","r",stdin);
        scanf("%d%d",&W,&L);
        scanf("%s",s);
        for(int i=0;i<W;i++)scanf("%s",w[i]);
        f[L]=0;
        for(int l=L-1;l>=0;l--){
            f[l]=f[l+1]+1;
            for(int i=0;i<W;i++){
                int len=strlen(w[i]);
                if(s[l]!=w[i][0])continue;
                int k=l,t=0;
                while(t<len&&k<L){
                    if(w[i][t]==s[k])t++,k++;
                    else k++;
                }
                if(t==len)f[l]=min(f[l],f[k]+k-l-len);
            }
        }
        printf("%d
    ",f[0]);
        return 0;
    }
    
  • 相关阅读:
    论文笔记4
    论文笔记3
    论文笔记2
    论文笔记1
    论文笔记
    AFG与AWG的比较
    Linux下“有线线缆被拔出”问题的解决
    python生成excel格式座位表
    PythonTip--一马当先--bfs
    python pygame--倒计时
  • 原文地址:https://www.cnblogs.com/01world/p/5762838.html
Copyright © 2011-2022 走看看