专栏文章

题解: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 会把 TT 也给读进去,所以需要用 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 条评论,欢迎与作者交流。

正在加载评论...