| 
		
			| 
	
	
		
			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; 
  }     |  |  | 
		
			| 
			
				| 
	|  |  | 日 | 一 | 二 | 三 | 四 | 五 | 六 | 
|---|
 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |  | 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 |  |   公告
  导航 统计
		随笔: 84
		文章: 7
		评论: 49
		引用: 0
	 常用链接留言簿(6)随笔分类随笔档案文章分类文章档案相册百事百通搜索积分与排名最新评论
	阅读排行榜评论排行榜
 |  |