题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=490
这题的输入输出格式好像描述的不太清楚,
1)可能是所有数据都完成输入,然后再输出(解法1,内存可能不够,对题意通用性高(AC通过))
2)也可能是待测试的数据输完一行就立马输出一行结果(解法2,内存能够,因为题意有歧义可能不能这样解(没通过))
两种写法都写了,最后以第一种输入输出格式通过的,还好后台数据没有内存超出的
下面贴上代码:
解法1(AC):
//解法1,内存可能不够,对题意通用性高(AC通过) #include<iostream> #include<map> #include<cstdio> using namespace std; int main() { ], s0, s1 = "", s2 = ""; map<string, string> f; f["czy"] = "cml"; cin >> s1; while(s2 != "BEGIN") { cin >> s1 >> s2; f[s2] = s1; } ; ]; do { cin >> s[++n]; ch[n] = getchar(); }while(s[n] != "END"); ; i < n; i++) { s0 = ""; ; j < s[i].size(); j++) { if(s[i][j] >= 'a' && s[i][j] <= 'z') { s0 += s[i][j]; } else { if(f[s0] != "") cout << f[s0]; else cout << s0; cout << s[i][j]; s0 = ""; } } if(f[s0] != "") cout << f[s0]; else cout << s0; if(ch[i] == '\n') cout << "\n"; else cout << " "; } }
<代码实现>点击展开
解法2(WA):
//解法2,内存能够,因为题意有歧义可能不能这样解(没通过) #include<iostream> #include<map> #include<cstdio> #include<cstring> using namespace std; int main() { string s0, s1 = "", s2 = ""; map<string, string> f; f["czy"] = "cml"; cin >> s1; ) { cin >> s1 >> s2; if(s2 == "BEGIN") break; f[s2] = s1; } ]; getchar(); ) { gets(s); ] == ] == ] == 'D') break; s0 = ""; ; i < strlen(s); i++) { if(s[i] >= 'a' && s[i] <= 'z') { s0 += s[i]; } else { if(f[s0] != "") cout << f[s0]; else cout << s0; cout << s[i]; s0 = ""; } } cout << endl; } }
<代码实现>点击展开
开始写于:2016.9.30 ----志银