zoukankan      html  css  js  c++  java
  • P1026 统计单词个数——substr

    P1026 统计单词个数

    string 基本操作:

    substr(x,y) x是起始位置,y是长度;

    返回的是这一段字符串;

    先预处理sum[i][j],表示以i开头,最多的单词数;

    从后往前寻找,保证开头没有被用过;

    sum[i][j]=sum[i+1][j];

    再找是否有新单词出现;

    s.find()==0说明找到单词以开头开始;

    然后dp,f[i][j]表示以i结尾分j段的最大单词数;

    #include<cstdio>
    #include<string>
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    string s,ch,a[10];
    int sum_dic,p,k;
    
    int sum[210][210];
    
    bool check(int l,int r)
    {
        string x;
        x=s.substr(l,r-l+1);
        for(int i=1;i<=sum_dic;i++) 
        {
            if(x.find(a[i])==0) return 1;
        }
        return 0;
    }
    
    int f[210][50];
    
    int main()
    {
        scanf("%d%d",&p,&k);
        s+="0";
        for(int i=1;i<=p;i++)
        {
            cin>>ch;
            s+=ch;
        }
        int len=s.length()-1;
        scanf("%d",&sum_dic);
        for(int i=1;i<=sum_dic;i++)
        {
            cin>>a[i];
        }
        
        for(int i=len;i>=1;i--)
        {
            for(int j=i;j>=1;j--)
            {
                sum[j][i]=sum[j+1][i];
                if(check(j,i)) sum[j][i]++;
            }
        }
        
        f[0][0]=0;
        for(int i=1;i<=k;i++) f[i][i]=f[i-1][i-1]+sum[i][i];
        
        for(int i=1;i<=len;i++) f[i][1]=sum[1][i];
        
        for(int i=1;i<=len;i++)
        {
            for(int j=1;j<=k&&j<i;j++)
            {
                for(int l=j;l<i;l++)
                {
                    f[i][j]=max(f[i][j],f[l][j-1]+sum[l+1][i]);
                }
            }
        }
        
        printf("%d",f[len][k]);
        
        return 0;
    }
    View Code
  • 相关阅读:
    sell学习
    redis安装
    [Yii Framework] Share the session with memcache in Yii
    CentOS 网络设置修改
    虚拟机的几种网络方式详解
    linux命令小技巧
    交叉编译: 常见参数配置
    Extend volumn in ubuntu 14.04
    OpenCV 2.4.13 installed in Ubuntu 14 and CMakeLists Demo
    CMake: Cross-Platform Compling
  • 原文地址:https://www.cnblogs.com/WHFF521/p/11674058.html
Copyright © 2011-2022 走看看