hdu 1251 统计拼图

二手tire木;

Basic应用程序

谈到很具体的 点击打开链接

#include<cstdio>
#include<cstring>
#include<iostream>
#define max 20
using namespace std;
char w[6];
struct node{
bool a;
int chile[26];
int q;//前缀出现次数
node(){
q=false;
q=0;
memset(chile,0,sizeof(chile));
}
}t[500000]; int sz=1;
void insert(char *w)
{
int len=strlen(w);
int s=0;
for(int i=0;i<len;i++)
{
int y=w[i]-'a';
if(t[s].chile[y]==0)
{
t[s].chile[y]=sz++;
}
s=t[s].chile[y];//下一个结点
t[s].q++;
}
t[s].a=1;
} int show(char *w)
{
int len=strlen(w);
int s=0;
for(int i=0;i<len;i++)
{
int y=w[i]-'a';
if(t[s].chile[y]==0)
return 0;
s=t[s].chile[y];
}
return t[s].q;
}
int main()
{
char s[50];
while(gets(s))
{
int len=strlen(s);
if(len==0) break;
insert(s);
}
while(gets(s))
{
printf("%d\n",show(s));
}
return 0;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

上一篇:《从零开始学Swift》学习笔记(Day 34)——静态属性是怎么回事?


下一篇:HDU 1251 统计难题 (Trie)