UVA 10082: WERTYU

Jasonlin posted @ 2011年3月28日 13:20 in UVA , 2461 阅读

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=12&problem=1023&mosmsg=Submission+received+with+ID+8686403

题目大意:

      按键盘的时候有时候会不小心按到右边的键,现在要你还原回来。

解题思路:

     跟密码问题是一样的,但是这题规律没有那么好定义,就按对应关系自己去构造联系。

解题代码:

#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;
}

扩展知识:http://en.wikipedia.org/wiki/QWERTY

  • 无匹配
  • 无匹配

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter