比赛 |
noip_6 |
评测结果 |
AAAAAAAAAA |
题目名称 |
词链 |
最终得分 |
100 |
用户昵称 |
zqzas |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2008-10-08 21:45:34 |
显示代码纯文本
#include <iostream>
#define MAXN 10001
#define MAXLONG 52
using namespace std;
int n,ans,f[MAXN],len[MAXN];
char data[MAXN][MAXLONG];
void run()
{
int i,j,k,max,flag;
f[n-1]=1;
for (i=n-2;i>=0;i--)
{
max=0;
for (j=i+1;j<n;j++)
{
if (len[j]<=len[i])
break;
//check
flag=1;
for (k=0;k<len[i];k++)
if (data[i][k]!=data[j][k])
{
flag=0;
break;
}
if (flag)
{
if (f[j]>max)
max=f[j];
}
else
break;
}
f[i]=max+1;
}
ans=0;
for (i=0;i<n;i++)
if (f[i]>ans)
ans=f[i];
}
void ini()
{
int i;
cin>>n;
for (i=0;i<n;i++)
{
scanf("%s",&data[i]);
len[i]=strlen(data[i]);
if (!(data[i][len[i]-1]>='a' && data[i][len[i]-1]<='z'))
{
data[i][len[i]-1]=0;
len[i]--;
}
}
}
int main()
{
freopen("link.in","r",stdin);
freopen("link.out","w",stdout);
ini();
run();
cout<<ans;
return 0;
}