RSS
linjiazhen
分类
标签云
搜索
随机文章
最新评论
最新留言
链接
计数器
145096
UVA 10082: WERTYU
Jasonlin
posted @ 2011年3月28日 13:20
in UVA
, 2488 阅读
题目大意:
按键盘的时候有时候会不小心按到右边的键,现在要你还原回来。
解题思路:
跟密码问题是一样的,但是这题规律没有那么好定义,就按对应关系自己去构造联系。
解题代码:
#include<iostream> #include<string> using namespace std; string p="AVXSWDFGUHJKNBIOQEARYCQZTZ"; string no="9`12345678"; string ex="-=[]\\;',./"; string ep="0-P[]L;M,."; int find(char c){ for(int i=0;i<10;i++) if(c==ex[i]) return i; return -1; } int main(){ string s; while(getline(cin,s)){ int len=s.length(),j; for(int i=0;i<len;i++){ if(s[i]>='A'&&s[i]<='Z') cout<<p[s[i]-'A']; else if(s[i]>='0'&&s[i]<='9') cout<<no[s[i]-'0']; else if((j=find(s[i]))!=-1) cout<<ep[j]; else cout<<s[i]; } cout<<endl; } return 0; }