专栏文章
题解:P13311 [GCJ 2012 Qualification] Speaking in Tongues
P13311题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miouxsg3
- 此快照首次捕获于
- 2025/12/03 01:34 3 个月前
- 此快照最后确认于
- 2025/12/03 01:34 3 个月前
你说得对,但是我刚开始以为这题的映射有规律然后找了十分钟。
思路
注意到题面给的三个映射和样例包含的映射基本覆盖了全部的字母,所以我们开个 map,一个一个输进去即可。
找完发现还有一个
z 没有在键中出现,再找一下发现 q 没有在值中出现,将它们两个对应起来。现在我们有了映射数组,剩下就简单了,遍历字符串,输出字符对应的值即可。
另外这题输入有点坑,因为字符串中有空格,所以只能用
getline,同时又因为 getline 会把 也给读进去,所以需要用 cin.ignore()。代码
CPP#include<bits/stdc++.h>
using namespace std;
int n;
string s;
map<char,char>mp;
int main(){
mp['a']='y',mp['b']='h',mp['c']='e',mp['d']='s',mp['e']='o',mp['f']='c';
mp['g']='v',mp['h']='x',mp['i']='d',mp['j']='u',mp['k']='i',mp['l']='g';
mp['m']='l',mp['n']='b',mp['o']='k',mp['p']='r',mp['q']='z',mp['r']='t';
mp['s']='n',mp['t']='w',mp['u']='j',mp['v']='p',mp['w']='f',mp['x']='m';
mp['y']='a',mp['z']='q',mp[' ']=' ';
cin>>n;
cin.ignore();
for(int t=1;t<=n;t++){
getline(cin,s);
cout<<"Case #"<<t<<": ";
for(int i=0;i<s.size();i++){
cout<<mp[s[i]];
}
cout<<endl;
}
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...