hdu1075 What Are You Talking About
模板是对了,但是题目的格式没弄清楚,然后换了一个主函数ac了。。。。
#include<iostream>
using namespace std;
struct trie
{
bool isword;
char word[11];
trie *child[26];
trie()
{
for(int i=0;i<26;i++) child[i]=0;
isword=0;
word[0]='\0';
}
} root;
void insert(char *x,char *y)
{
int k=0;trie *p=&root;
while(y[k]!='\0')
{
if(!p->child[y[k]-'a']) p->child[y[k]-'a']=new trie;
p=p->child[y[k++]-'a'];
}
p->isword=1;
strcpy(p->word,x);
}
char *search(char *x)
{
int k=0;trie *p=&root;
while(x[k]!='\0'&&p->child[x[k]-'a']) p=p->child[x[k++]-'a'];
if(x[k]=='\0'&&p->isword)
return p->word;
else
return 0;
}
int main()
{
int i,j,k,m,len;
char x[11],y[11],tmp[3002];
scanf("%s",x);
while(scanf("%s",x))
{
if(strcmp(x,"END")==0) break;
scanf("%s",y);
insert(x,y);
}
scanf("%s",x);
getchar();
while(1)
{
gets(tmp);
if(strcmp(tmp,"END") == 0 ) break;
k=0;
len = strlen(tmp);
tmp[len]=' ';
tmp[++len]='\0';
for(i=0;i<len;i++)
if(!(tmp[i]>='a' && tmp[i]<='z'))
{
x[k]='\0';
char *temp = search(x);
if(temp)
printf("%s",temp);
else
printf("%s",x);
k=0;
if(i!=len-1)
cout<<tmp[i];
}
else
x[k++]=tmp[i];
cout<<endl;
}
return 0;
}