关于一个前缀字符串的题目

来源:百度知道 编辑:UC知道 时间:2024/05/29 09:20:31
如果一个字符串s1是由另一个字符串s2的前面部分连续字符组成的,那么我们就说s1就是s2的前缀。比如“ac”是“acm”的前缀,“abcd”是“abcddfasf”的前缀,特别的“kdfa”是“kdfa”的前缀。
现在给你一些字符串,你的任务就是从这些字符串中找出一些字符串放到一个集合中,使得这个集合中任意一个字符串不是其他字符串的前缀,并且要使集合里的字符串尽可能的多。输出这个集合中字符串的个数。

Input

有多组测试数据。每组测试数据以一个整数n开头,随后有n个字符串。
当n=0时表示输入结束。 0

Output

每组测试数据输出一个整数,即所求的最大值。每组数据占一行。

Sample Input

6
acm
yuou
yuoufsdaf
acmmmdf
acmm
fdsf
0

Sample Output

3

Source

我的程序:
#include <iostream>
#include <string>
using namespace std;
struct node //定义一个结构体用来储存字符串,以及测定其长度
{
char arry[1000];
int k;
};
node a[1000];
int main()
{
int n;
while (cin>>n&&n)
{
int i,j,t,count=0;//count用于统计有几个不是其他字符串的前缀。
for(i=0;i<n;i++)
{
cin>>a[i].arry;
a[i].k=strlen(a[i].arry);
}
for(i=0;i<n;i++)//将

C++不是很会.
用Pascal还差不多

这么难?我想没有几个人能读完全文的(*^__^*)...嘻嘻

假设你输入的是
2
abc
abc

正确的答案应该是1

但是你的代码应该是0

而且这个代码的时间复杂度好高!