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)
隨筆分類
隨筆檔案
文章分類
文章檔案
相冊
百事百通
搜索
積分與排名
最新評論

閱讀排行榜
評論排行榜
|
|