hdu 1075 What Are You Talking About(给你字典,让您翻译句子,字典中查不到的单词不用翻译)
hdu 1075 What Are You Talking About(给你字典,让你翻译句子,字典中查不到的单词不用翻译)
1.这是一道字典树的题,但用map也可以做
2.代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<map>
using namespace std;
map<string,string> mp;
char s[30100],ss[15];
int main()
{
scanf("%s",s);
while(1)
{
scanf("%s",s);
if(strcmp(s,"END")==0)
break;
scanf("%s",ss);
string s1,s2;
int len1=strlen(s);
int len2=strlen(ss);
for(int i=0; i<len1; i++)
{
s1+=s[i];
}
for(int i=0; i<len2; i++)
{
s2+=ss[i];
}
mp.insert(make_pair(s2,s1));
}
map<string,string>::iterator it;
/*for(it=mp.begin();it!=mp.end();it++)
{
cout<<(it->first)<<" "<<(it->second)<<endl;
}*/
scanf("%s",s);
getchar();
while(1)
{
gets(s);
//getchar();
if(strcmp(s,"END")==0)
{
break;
}
int len=strlen(s);
//s[len]=' ';
string sss;
for(int i=0; i<=len; i++)
{
if(s[i]>=97&&s[i]<=122)
{
sss+=s[i];
}
else
{
if(sss.size()==0)
{
if(i!=len)
cout<<s[i];
continue;
}
else
{
it=mp.find(sss);
if(it!=mp.end())
{
cout<<it->second;
}
else
{
cout<<sss;
}
if(i!=len)
cout<<s[i];
sss.clear();
}
}
}
cout<<endl;
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。