ZOJ 3878 The 12th Zhejiang Provincial Collegiate Programming Contest - J

Convert QWERTY to Dvorak

Time Limit: 2 Seconds       Memory Limit: 65536 KB

Edward, a poor copy typist, is a user of the Dvorak Layout. But now he has only a QWERTY Keyboard with a broken Caps Lock key, so Edward never presses the broken Caps Lock key. Luckily, all the other keys on the QWERTY keyboard work well. Every day, he has a lot of documents to type. Thus he needs a converter to translate QWERTY into Dvorak. Can you help him?

The QWERTY Layout and the Dvorak Layout are in the following:

Qwerty Layout
The QWERTY Layout

Dvorak Layout
The Dvorak Layout

Input

A QWERTY document Edward typed. The document has no more than 100 kibibytes. And there are no invalid characters in the document.

Output

The Dvorak document.

Sample Input
Jgw Gqm Andpw a H.soav Patsfk f;doe
Nfk Gq.d slpt a X,dokt vdtnsaohe
Kjd yspps,glu pgld; aod yso kd;kgluZ
1234567890
`~!@#$%^&*()}"']_+-=ZQqWEwe{[\|
ANIHDYf.,bt/
ABCDEFuvwxyz
Sample Output
Hi, I'm Abel, a Dvorak Layout user.
But I've only a Qwerty keyboard.
The following lines are for testing:
1234567890
`~!@#$%^&*()+_-={}[]:"'<>,.?/\|
ABCDEFuvwxyz
AXJE>Ugk,qf;


浙江省赛一道水题,模拟一个键盘,能按键替代的。我交了三遍WA,一直没搞明白为何WA了,然后我把输出改成一个个的输出,就AC了。。。我一直没弄懂原来的咋错了,求大神帮我看看。做这个题真是日狗了。。。莫名其妙啊……我把原来的代码注释了。下面是代码:

//#include <iostream>
//#include <stdio.h>
//#include <math.h>
//#include <stdlib.h>
//#include <string>
//#include <string.h>
//#include <algorithm>
//#include <vector>
//#include <queue>
//#include <set>
//#include <map>
//#include <stack>
//using namespace std;
//typedef long long LL;
//const int INF=0x7fffffff;
//const int MAX_N=10000;
//
//char A[10000];
//char c;
//char B[109];
//int main(){
//    memset(A,0,sizeof(0));
//    A['q']='\'';
//    A['Q']='\"';
//    A['w']=',';
//    A['W']='<';
//    A['e']='.';
//    A['E']='>';
//    A['r']='p';
//    A['R']='P';
//    A['t']='y';
//    A['T']='Y';
//    A['y']='f';
//    A['Y']='F';
//    A['u']='g';
//    A['U']='G';
//    A['i']='c';
//    A['I']='C';
//    A['o']='r';
//    A['O']='R';
//    A['p']='l';
//    A['P']='L';
//    A['[']='/';
//    A['{']='?';
//    A[']']='=';
//    A['}']='+';
//    A['s']='o';
//    A['S']='O';
//    A['d']='e';
//    A['D']='E';
//    A['f']='u';
//    A['F']='U';
//    A['g']='i';
//    A['G']='I';
//    A['h']='d';
//    A['H']='D';
//    A['j']='h';
//    A['J']='H';
//    A['k']='t';
//    A['K']='T';
//    A['l']='n';
//    A['L']='N';
//    A[';']='s';
//    A[':']='S';
//    A['\'']='-';
//    A['"']='_';
//    A['z']=';';
//    A['Z']=':';
//    A['x']='q';
//    A['X']='Q';
//    A['c']='j';
//    A['C']='J';
//    A['v']='k';
//    A['V']='K';
//    A['b']='x';
//    A['B']='X';
//    A['n']='b';
//    A['N']='B';
//    A[',']='w';
//    A['<']='W';
//    A['.']='v';
//    A['>']='V';
//    A['/']='z';
//    A['?']='Z';
//    A['-']='[';
//    A['_']='{';
//    A['=']=']';
//    A['+']='}';
//    memset(B,0,sizeof(B));
//    int ct=0;
//    while(scanf("%c",&c)!=EOF){
//        if(c=='\n'){
//            ct=0;
//            printf("%s\n",B);
//            memset(B,0,sizeof(B));
//        }
//        else{
//            if(A[c]!=0){
//                B[ct++]=A[c];
//            }
//            else B[ct++]=c;
//        }
//
//    }
//    return 0;
//}



#include <iostream>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <stack>
using namespace std;
typedef long long LL;
const int INF=0x7fffffff;
const int MAX_N=10000;

char A[10000];
char c;
char B[109];
int main(){
    memset(A,0,sizeof(0));
    A['q']='\'';
    A['Q']='\"';
    A['w']=',';
    A['W']='<';
    A['e']='.';
    A['E']='>';
    A['r']='p';
    A['R']='P';
    A['t']='y';
    A['T']='Y';
    A['y']='f';
    A['Y']='F';
    A['u']='g';
    A['U']='G';
    A['i']='c';
    A['I']='C';
    A['o']='r';
    A['O']='R';
    A['p']='l';
    A['P']='L';
    A['[']='/';
    A['{']='?';
    A[']']='=';
    A['}']='+';
    A['s']='o';
    A['S']='O';
    A['d']='e';
    A['D']='E';
    A['f']='u';
    A['F']='U';
    A['g']='i';
    A['G']='I';
    A['h']='d';
    A['H']='D';
    A['j']='h';
    A['J']='H';
    A['k']='t';
    A['K']='T';
    A['l']='n';
    A['L']='N';
    A[';']='s';
    A[':']='S';
    A['\'']='-';
    A['"']='_';
    A['z']=';';
    A['Z']=':';
    A['x']='q';
    A['X']='Q';
    A['c']='j';
    A['C']='J';
    A['v']='k';
    A['V']='K';
    A['b']='x';
    A['B']='X';
    A['n']='b';
    A['N']='B';
    A[',']='w';
    A['<']='W';
    A['.']='v';
    A['>']='V';
    A['/']='z';
    A['?']='Z';
    A['-']='[';
    A['_']='{';
    A['=']=']';
    A['+']='}';
    memset(B,0,sizeof(B));
    int ct=0;
    while(scanf("%c",&c)!=EOF){
        if(c=='\n'){
            ct=0;
            printf("\n");
        }
        else{
            if(A[c]!=0){
                printf("%c",A[c]);
            }
            else printf("%c",c);
        }

    }
    return 0;
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值