http://acm.hdu.edu.cn/showproblem.php?pid=1075
 /**//*
START
hh1 aa
END
START
a aa
END
*/
#include<iostream>
#include<string>
using namespace std;
int i;
struct dictree
  {
dictree *child[26];
char engWord[11];
dictree()//初始化非常的有必要
 {
for(i=0;i<26;i++)
child[i] = NULL;
engWord[0]='\0';
}
};
dictree root;
void insert(char eng[],char mar[])//构建字典树
  {
dictree *now = &root;
char *tmp = mar;
while(*tmp)
 {
if(now->child[*tmp-'a']==NULL)
now->child[*tmp-'a'] = new dictree;
now = now->child[*tmp-'a'];
tmp++;
}
strcpy(now->engWord,eng);
}

char *find(char ch[])//查找单词
  {
dictree *p = &root;
int k=0;
while(1)
 {
if(ch[k]=='\0' || p->child[ch[k]-'a']==NULL)
break;
p = p->child[ch[k]-'a'];
k++;
}
if(ch[k]=='\0' && strcmp(p->engWord,"")!=0)
return p->engWord;
return NULL;
}

int main()
  {
char a[11],b[11];
scanf("%s",a);//"START"
while(scanf("%s",a) && strcmp(a,"END")!=0 )
 {
scanf("%s",b);
insert(a,b);
}
scanf("%s",a);//"START"
getchar();//吃回车
char tmp[3002];
while(1)
 {
gets(tmp);//用这个比getline()强
if(strcmp(tmp,"END") == 0 )
break;
int i,len,k=0;
len = strlen(tmp);
tmp[len]=' ';//多加一个' ',输出的时候注意
tmp[++len]='\0';
char tp[3002];
for(i=0;i<len;i++)
 {
if(!(tmp[i]>='a' && tmp[i]<='z'))//非小写字母
 {
tp[k]='\0';
char *temp = find(tp);//查找是否有对应的engWord
if(temp)//存在这个单词
printf("%s",temp);
else
printf("%s",tp);//可以用cout<<tp;//不可以用puts(tp);用puts有换行
k=0;
if(i!=len-1)//最后有一个' '是多余的
cout<<tmp[i];//输出非小写字母字符
}
else //小写字母
tp[k++]=tmp[i];
}
cout<<endl;
}
return 0;
}

#include<iostream>
#include<string>
#include<map>
using namespace std;
map<string,string>M;
int main()
  {
string a,b;
cin>>a;//"START"
while(cin>>a && a!="END")
 {
cin>>b;
M[b] = a;
}
cin>>a;//"START"
getchar();//吃回车
char tmp[3005];
while(1)
 {
gets(tmp);//用这个比getline()强
if(strcmp(tmp,"END") == 0 )
break;
int i,len;
len = strlen(tmp);
b = "";
for(i=0;i<len;i++)
 {
if(!(tmp[i]>='a' && tmp[i]<='z'))//非小写字母
 {
if(M[b]!="")//存在这个单词
cout<<M[b];
else
cout<<b;
b="";
cout<<tmp[i];
}
else //小写字母
b+=tmp[i];
}
cout<<endl;
}
return 0;
}
|
|
|
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
---|
25 | 26 | 27 | 28 | 29 | 30 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 1 | 2 | 3 | 4 | 5 |
|
公告
导航
统计
- 随笔: 84
- 文章: 7
- 评论: 49
- 引用: 0
常用链接
留言簿(6)
随笔分类
随笔档案
文章分类
文章档案
相册
百事百通
搜索
积分与排名
最新评论

阅读排行榜
评论排行榜
|
|