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

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

分析:

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

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

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
#define maxn 2000+100
#define ll long long
using namespace std;
string a[maxn];
ll f[maxn];
int main()
{
int n,ml=;
cin>>n;
for(int i=;i<=n;++i) cin>>a[i],f[i]=;
for(int i=;i<=n;++i)
{
for(int j=;j<i;j++)
{
int k=a[i].find(a[j]);
if(k==&&f[i]<f[j]+) f[i]=f[j]+;
}
}
for(int i=;i<=n;++i) if(ml<f[i]) ml=f[i];
cout<<ml;
return ;
}

最新文章

  1. c# 常量,变量
  2. UrlRewrite伪静态
  3. SSAS:概念梳理
  4. libstdc++
  5. 扩展KMP
  6. cl.exe
  7. ORACLE之PACKAGE
  8. JM编解码264
  9. 依賴注入入門——Unity(二)
  10. 完美实现同时分享图片和文字(Intent.ACTION_SEND)
  11. 【ESP8266】发送HTTP请求
  12. Spring中属性注入的几种方式以及复杂属性的注入
  13. Nginx详解篇
  14. c# ASP.NET Core2.2利用中间件支持跨域请求
  15. POJ1015-Jury Compromise-dp
  16. numpy累积
  17. linux驱动工程面试必问知识点
  18. 配置sudo日志审计
  19. Hive基础之绪论
  20. libmysqlclient.so.16: cannot open shared object file: No such file or directory

热门文章

  1. python 实现剪刀石头布(三局两胜)
  2. 六、Shell echo命令
  3. MVP模式与MVVM模式
  4. ZendFramework-2.4 源代码 - 关于Module - 模块入口文件
  5. 单片机入门学习笔记6:新唐单片机N76E003
  6. Assignment HDU - 2853(二分图匹配 KM 新边旧边)
  7. [BZOJ1187]神奇游乐园(插头DP)
  8. Sublime Text配置python以及快捷键总结
  9. AngularJS 之1-初识
  10. Maya