zoukankan      html  css  js  c++  java
  • poj3267The Cow Lexicon(dp)

    http://poj.org/problem?id=3267

    对dp没研究 看了看解题报告 还是比较好推的 dp[i] = min{dp[i]-1,dp[j]+i-j-length[k]} 若从J到i包含字典中的单词

    View Code
     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 char word[650][30];
     7 int main()
     8 {
     9     int i,j,k,n,m,dp[310],kk[610];
    10     char str[310];
    11     while(cin>>n>>m)
    12     {
    13         cin>>str;
    14         memset(dp,0,sizeof(dp));
    15         for(i = 1; i <= n; i++)
    16         {
    17             cin>>word[i];
    18             kk[i] = strlen(word[i]);
    19         }
    20         for(i = 0 ; i < m ; i++)
    21         {
    22             int mi = 1000;
    23             if(i>0)
    24             dp[i] = dp[i-1]+1;
    25             else
    26             dp[i] = 1;
    27             for(j = 1 ; j <= n ; j++)
    28             {
    29                 int g = kk[j]-1,tk = i;
    30                 while(tk>=0&&g>=0&&(i-tk+1-kk[j])<dp[i])
    31                 {
    32                     if(str[tk]==word[j][g])
    33                     g--;
    34                     tk--;
    35                 }
    36                 if(tk<0)
    37                 tk = 0;
    38                 if(g<0)
    39                 {
    40                     mi = min(mi,i-tk-kk[j]+dp[tk]);
    41                 }
    42                 else
    43                 mi = min(mi,i-tk+dp[tk]);
    44             }
    45             if(mi!=1000)
    46             dp[i] = min(dp[i],mi);
    47         }
    48         cout<<dp[m-1]<<endl;
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    [汇编与C语言关系]1.函数调用
    深入理解计算机系统
    设计模式
    深度探索C++对象模型
    More Effective C++
    MySQL必知必会
    数据结构与算法分析
    Java编程思想(后)
    Java编程思想(前十章)
    Java 入门
  • 原文地址:https://www.cnblogs.com/shangyu/p/2816755.html
Copyright © 2011-2022 走看看