题目地址:点击打开链接
思路:模板题,不用释放内存,就一组数据,用C++提交,G++可能会MLE
AC代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <cstring>
#include <climits>
using namespace std;
const int maxn = INT_MAX;
struct trie
{
int v;
trie *next[26];
};//加分号
trie *root;
void create_trie(char *str)
{
int len = strlen(str);
int i,j,id;
trie *p = root,*q;
for(i=0; i<len; i++)
{
id = str[i] - 'a';
if(p->next[id] == NULL)
{
q = (trie*)malloc(sizeof(trie));
for(j=0; j<26; j++)
{
q->next[j] = NULL;
}
q->v = 1;
p->next[id] = q;
p = p->next[id];
}
else
{
p = p->next[id];
p->v++;
}
}
}
int find_trie(char *str)
{
trie *p = root;
int i,id,len = strlen(str);
for(i=0; i<len; i++)
{
id = str[i] - 'a';
if(p->next[id] == NULL)
return 0;
p = p->next[id];
}
return p->v;
}
int main()
{
int i;
char lol[15];
int sum;
root = (trie*)malloc(sizeof(trie));
for(i=0; i<26; i++)
{
root->next[i] = NULL;
}
while(gets(lol) && lol[0] != '\0')
create_trie(lol);
while(gets(lol))
{
sum = find_trie(lol);
printf("%d\n",sum);
}
return 0;
}
大神地址:
点击打开链接,
点击打开链接,
点击打开链接