NYOJ:题目490 翻译

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=490

NYOJ:题目490 翻译

NYOJ:题目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  ----志银

上一篇:JavaSE(六)包装类、基本类型和字符串之间的转换、==和equals的区别


下一篇:java的包装类(转)