http://acm.hdu.edu.cn/showproblem.php?pid=1075
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/204800 K (Java/Others)
Total Submission(s): 13618 Accepted Submission(s): 4366
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <iostream> #include <map> using namespace std; int main() { char str1[3010],str2[15],str3[15]; map<string ,string >m; map<string ,string >::iterator it; scanf("%*s"); while(scanf("%s",str2)!=EOF&&str2[0]!=‘E‘) { scanf("%s",str3); m[str3]=str2; } scanf("%*s"); getchar(); while(cin.getline(str1,3010)&&str1[0]!=‘E‘)//遇到换行停止 { int step=0; memset(str2,‘\0‘,sizeof(str2)); for(int i=0;i<strlen(str1);i++) { if(str1[i]<‘a‘ || str1[i]>‘z‘) { if(step) { it=m.find(str2); if(it != m.end()) { cout<<it->second; } else { printf("%s",str2); } step=0; memset(str2,‘\0‘,sizeof(str2)); } cout<<str1[i]; } else str2[step++]=str1[i]; } puts(""); //printf("\n"); } return 0; }
原文:http://www.cnblogs.com/ccccnzb/p/3890447.html