zoukankan      html  css  js  c++  java
  • poj3267

    题意:问母串中至少去掉多少个字母才能是刚好由单词表中的一些单词连接而成的。

    分析:dp,f[i]表示母串从第i位起始的后缀所对应的最少去掉字母数。

    f[i]有两种选择f[i + 1] + 1或者f[i + num] + num - strlen(word[j])。其中num是从第i位开始匹配word[j]所需要的母串从i位起始的后缀的前缀的长度。

    View Code
    #include <iostream>
    #include
    <cstdio>
    #include
    <cstdlib>
    #include
    <cstring>
    usingnamespace std;

    #define maxn 605
    #define maxl 305

    int n, m;
    char st[maxl], word[maxn][maxl];
    int f[maxl];

    int match(char*st1, char*st2)
    {
    if (st1[0] != st2[0])
    return0;
    int len = strlen(st2);
    int j =0;
    for (int i =0; i < len; i++)
    {
    while (st1[j] !='\0'&& st1[j] != st2[i])
    j
    ++;
    if (st1[j] =='\0')
    return0;
    j
    ++;
    }
    return j;
    }

    int main()
    {
    //freopen("t.txt", "r", stdin);
    scanf("%d%d", &n, &m);
    scanf(
    "%s", st);
    int num;
    for (int i =0; i < n; i++)
    scanf(
    "%s", word[i]);
    f[m]
    =0;
    for (int i = m -1; i >=0; i--)
    {
    f[i]
    = f[i +1] +1;
    for (int j =0; j < n; j++)
    if (num = match(&st[i], word[j]))
    f[i]
    = min(f[i], int(num - strlen(word[j]) + f[i + num]));
    }
    printf(
    "%d\n", f[0]);
    return0;
    }
  • 相关阅读:
    汇编-实验9
    Starling开源手势库AcheGesture
    Robotlegs2的Starling扩展
    Flash Builder 4.6/4.7 注释以及字体大小修改
    js中函数的理解
    js对象引用赋值后
    var声明提前 undefined
    光棍节程序员闯关秀
    body和普通div背景图宽高百分比的区别
    笔试题
  • 原文地址:https://www.cnblogs.com/rainydays/p/2096219.html
Copyright © 2011-2022 走看看