zoukankan      html  css  js  c++  java
  • Vijos[1028]魔族密码

    风之子刚走进他的考场,就……
    花花:当当当当~~偶是魅力女皇——花花!!^^(华丽出场,礼炮,鲜花)
    风之子:我呕……(杀死人的眼神)快说题目!否则……-_-###
    花花:……咦~~好冷~~我们现在要解决的是魔族的密码问题(自我陶醉:搞不好魔族里面还会有人用密码给我和菜虫写情书咧,哦活活,当然是给我的比较多拉*^_^*)。魔族现在使用一种新型的密码系统。每一个密码都是一个给定的仅包含小写字母的英文单词表,每个单词至少包含1个字母,至多75个字母。如果在一个由一个词或多个词组成的表中,除了最后一个以外,每个单词都被其后的一个单词所包含,即前一个单词是后一个单词的前缀,则称词表为一个词链。例如下面单词组成了一个词链:
    i
    int
    integer
    但下面的单词不组成词链:
    integer
    intern
    现在你要做的就是在一个给定的单词表中取出一些词,组成最长的词链,就是包含单词数最多的词链。将它的单词数统计出来,就得到密码了。

    风之子:密码就是最长词链所包括的单词数阿……
    花花:活活活,还有,这些文件的格式是,第一行为单词表中的单词数N(1<=N<=2000),下面每一行有一个单词,按字典顺序排列,中间也没有重复的单词咧!!你要提交的文件中只要在第一行输出密码就行啦^^

    分析:

    这道题理应用DP,每次判断当前字符串是否包含上一个字符串,如果包含,并且f[i]<f[j]+1,则f[i]=f[j]+1;不包含就什么都不说了,因为还要扫其他的。最后比较即可。

    又复习了字符串(话说字符串确实。。。。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<cstdlib>
     6 #include<algorithm>
     7 #define maxn 2000+100
     8 #define ll long long
     9 using namespace std;
    10 string a[maxn];
    11 ll f[maxn];
    12 int main()
    13 {
    14    int n,ml=0;
    15    cin>>n;
    16    for(int i=1;i<=n;++i) cin>>a[i],f[i]=1;
    17    for(int i=2;i<=n;++i)
    18    {
    19        for(int j=1;j<i;j++)
    20        {
    21           int k=a[i].find(a[j]);
    22            if(k==0&&f[i]<f[j]+1) f[i]=f[j]+1;
    23        }
    24    }
    25    for(int i=1;i<=n;++i) if(ml<f[i]) ml=f[i];
    26    cout<<ml;
    27    return 0;
    28 }
    View Code
  • 相关阅读:
    我这里面所用的DBHelper
    同时向主表和从表里面导入execl数据 (asp.net webform)
    在asp.net webform中的 gridview 里面的一些基本操作
    在ASP.NET WEBFORM 中后台实现gridview全选功能
    asp.net webform 发送电子邮件
    Asp.Net中的三种分页方式
    asp.net获取客户端浏览器及主机信息
    在asp.net webfrom 中上传execl (读取单个sheet的数据)
    Linux五种IO模型性能分析
    epoll/poll/select的原理
  • 原文地址:https://www.cnblogs.com/TYH-TYH/p/4854400.html
Copyright © 2011-2022 走看看