标签:des style blog io ar for sp div c
输入一个字典,字典格式为“英语à外语”的一一映射关系
然后输入若干个外语单词,输出他们的 英语翻译单词,如果字典中不存在这个单词,则输出“eh”
poj2503题目意思很简单:就像查找一本字典,根据输入的条目和要查询的单词,给出查询结果(每个单词长度不超过10)。这题有很多实现方式,最容易想到的就是map,但这是acm训练且stl里面的map速度不够快,那就要另谋出路。
自己AC通过的
#include<cstdio>
#include<cstring>
int num;
char des[100001][11];
class tirenode{
public:
tirenode * next[26];
int id;
tirenode()
{
memset(next,0,sizeof(next));
id=0;
}
}root;
void insert(char ch1[],char ch2[])
{
tirenode *p=&root;
int i=0;
while(ch2[i])
{
if(p->next[ch2[i]-‘a‘]==0)
{
p->next[ch2[i]-‘a‘]=new tirenode;
}
p=p->next[ch2[i]-‘a‘];
i++;
}
if(p->id==0)//如果还没存在这个单词
{
num++;
p->id=num;
strcpy(des[num],ch1);
}
}
int find(char ch3[])
{
tirenode *p=&root;
int i=0;
while(ch3[i])
{
if(p->next[ch3[i]-‘a‘]==0)
{
printf("eh\n");
return 1;
}
p=p->next[ch3[i]-‘a‘];
i++;
}
if(p->id==0)
printf("eh\n");
else printf("%s\n",des[p->id]);
return 1;
}
int main()
{
char chch[22],ch1[11],ch2[11];
int i,j;
num=0;
while(gets(chch) && chch[0])
{
for(i=0;chch[i]!=‘ ‘;i++)
ch1[i]=chch[i];
ch1[i]=0;
i++;
j=0;
for(;chch[i];i++)
ch2[j++]=chch[i];
ch2[j]=0;
insert(ch1,ch2);
// printf("%s\t%s",ch1,ch2);
}
while(gets(chch))
{
find(chch);
}
return 1;
}
标签:des style blog io ar for sp div c
原文地址:http://www.cnblogs.com/notlate/p/4011591.html