• SSL 2297——单词的划分_DP


    Description

    有一个很长的由小写字母组成字符串。为了便于对这个字符串进行分析,需要将它划分成若干个部分,每个部分称为一个单词。出于减少分析量的目的,我们希望划分出的单词数越少越好。你就是来完成这一划分工作的。

    Input

    第一行,一个字符串。(字符串的长度不超过100)
      第二行一个整数n,表示单词的个数。(n<=100)
      第3~n+2行,每行列出一个单词。

    Output

    一个整数,表示字符串可以被划分成的最少的单词数。

    Sample Input

    realityour
    5
    real
    reality
    it
    your
    our
    Sample Output

    2


    纯DP题,比较
    思路主要是枚举长度,再判断这个长度能不能划分更多的单词。


    代码如下:

    var
      s:string;
      a:array[1..100]of string;
      l,f:array[0..100]of longint;
      i,j,k,m,n:longint;
    begin
      readln(s);
      readln(n);
      for i:=1 to n do
        begin
          readln(a[i]);
          l[i]:=length(a[i]);
        end;
      for i:=1 to length(s) do
        begin
          f[i]:=maxlongint;
          for j:=1 to n do
            if l[j]<=i then
              if (copy(s,i-l[j]+1,l[j])=a[j])and(f[i]>f[i-l[j]]+1) then f[i]:=f[i-l[j]]+1;
        end;
      writeln(f[length(s)]);
    end.
  • 相关阅读:
    redis
    linux systemd
    分布式高可用架构演进
    c++ 多线程 信号量简单使用
    JAVA上传文件到FTP上
    JAVA字符串去掉html代码
    jQuery判断复选框是否勾选
    SpringBoot全局异常处理
    SpringBoot统一日志打印
    JAVA加解密之DES
  • 原文地址:https://www.cnblogs.com/Comfortable/p/8412359.html
Copyright © 2020-2023  润新知