题目:

A common typing error is to place the hands on the keyboard one row to the right of the correct position. So ‘Q’ is typed as ‘W’ and ‘J’ is typed as ‘K’ and so on. You are to decode a message typed in this manner.

Input

Input consists of several lines of text. Each line may contain digits, spaces, upper case letters (except Q, A, Z), or punctuation shown above [except back-quote (‘)]. Keys labelled with words [Tab, BackSp, Control, etc.] are not represented in the input.

Output

You are to replace each letter or punction symbol by the one immediately to its left on the ‘QWERTY’ keyboard shown above. Spaces in the input should be echoed in the output.

Sample Input

O S, GOMR YPFSU/

Sample Output

I AM FINE TODAY.


此题的关键就在于如何确定给定字符在键盘上的左边一个字符是什么。可以用30个if但是太烦了。这里涉及到一个常量数组。将键盘上的字符按照行顺序写进一个数组,这样用数组的下标可以访问左边的字符。

char s[] = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";

但是这给循环搜索造成了麻烦。字符数组的最后一个一定是空字符,用这个判断数组结束。

for (i=1;s[i];i++);  //这里不需要考虑i=0,这种情况被题设排除

于是顺便将条件一起解决了

for (i=1;s[i] && c == s[i];i++);

最后输出,如果i不是s数组的最后一个,就直接替换为s[i-1],否则就输出c(就是空格了)

if(s[i])  putchar(s[i-1]);

else   putchar(c);

照例,本题使用逐个读取。

while ((c = getchar()) != EOF){…………}  //考虑到可能有空格的出现

解:

#include <stdio.h>int main()
{int c,i;char s[] = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";while ((c = getchar()) != EOF){for (i=1;s[i] && s[i] != c;i++);if (s[i])    putchar(s[i-1]);else putchar(c);}return 0;
}

https://vjudge.net/problem/UVA-10082(UVa太慢)

转载于:https://www.cnblogs.com/nowonder/p/WERTYU.html

【OI】WERTYU UVa 10082相关推荐

  1. 算法竞赛入门经典(第二版) | 程序3-6 WERTYU (UVa 10082)(常量数组)

    题目描述: 输入一个按键盘顺序,向后错一位后敲出的字符串,输出本来想打出的句子, 且输入中不会出现不合法的字符,例如A. Simple input: O S, GOME YPFSU/ Simple o ...

  2. UVA----10082 WERTYU【字符串】

    WERTYU UVA - 10082 题目传送门 题目大意:按照所给的键盘样式,以及错误的字符串,输出正确的字符串,其输入的每一个字符都按照键盘样式向右错移了一位. 解决方法:将整个键盘用数组存起来, ...

  3. 【NOI2022】PV「什么是信息学精神?」

    [NOI2022]PV「什么是信息学精神?」 [NOI2022]PV「什么是信息学精神?」_哔哩哔哩_bilibili [最美教师]徐先友老师:用10年带出一支信息学强队 [最美教师]徐先友老师:用1 ...

  4. NUC1429 WERTYU【输入输出】

    WERTYU 时间限制: 1000ms 内存限制: 65535KB 通过次数: 1总提交次数: 1 问题描述 A common typing error is to place the hands o ...

  5. 【瞎扯】我的OI之路

    [瞎扯]我的OI之路 这里大概是一些我自己对我的OI之路的一些记录. 2015.11不知道哪一天-- 我听说了"编程". 当时还不懂得啥是信息学竞赛,以为这只是纯粹的程序设计. 那 ...

  6. 【OI向】快速傅里叶变换(Fast Fourier Transform)

    [OI向]快速傅里叶变换(Fast Fourier Transform) 转存于本人博客园 地址 FFT的作用 ​ 在学习一项算法之前,我们总该关心这个算法究竟是为了干什么. ​ (以下应用只针对OI ...

  7. 【POJ No. 1577 / UVA No. 1525】落叶 Falling Leaves

    [POJ No. 1577 / UVA No. 1525]落叶 Falling Leaves POJ题目地址 [题意] 一棵字母二叉树如下图所示. 一棵字母二叉树可以是两者之一: ①空树: ②有一个根 ...

  8. 【ACM】UVa 489 刽子手游戏(自顶向下)

    [题目] Hangman Judge是一个猜英文单字的小游戏(在电子字典中常会看到),游戏规则如下: 1.答案单字写在纸上(每个字元一张纸),并且被盖起来,玩家每次猜一个英文字元(letter). 2 ...

  9. 【ACM】Uva 455

    [题目]:如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期.输入一个长度不超过80的字符串,输出其最小正周期. 注意以下几点: 1.它的最小正周期一定可以被它的长度整除. 2第 ...

最新文章

  1. 成为优秀UI设计师需要具备哪些条件?
  2. 搜索引擎学习(五)Lucene操作索引
  3. Nginx与Zuul之间区别
  4. iOS 根据图片URL从本地相册获取图片
  5. IDEA配置Struts框架
  6. svd奇异值分解_Lecture 28 | 奇异值分解
  7. 第十篇 requests模块
  8. js文件上传及格式装换
  9. java营销活动动态引擎规则_JAVA规则引擎 Drools 教程
  10. 02-Spring的核心API
  11. 家庭必备,轻、快、好用的WIN10自带虚拟机
  12. 网页游戏外挂资料(转)
  13. 达摩院提出时序预测新模型 有效提升预测精准度
  14. Java的学习——培训或自学
  15. iOS APP上线 发布流程
  16. 剪切caspase3_Caspase-3活性检测
  17. OKCoin期货现货API[Python3版]
  18. 目标检测、追踪梳理:帧差法、光流法、背景减除法
  19. 应用QQ2440(s3c2440)ARM开发板驱动MMA7455加速度计的linux设备驱动编写
  20. 宜未雨而绸缪,毋临渴而掘井。

热门文章

  1. 赚钱的这些年(上)苦逼
  2. 我们该怎么成为技术尖子生
  3. java map to map 拷贝_java复制Map 对象(深拷贝和浅拷贝)
  4. java class对象创建时机_Java面向对象编程-类的声明周期
  5. Xilinx ISE 开发过程中生成的各种文件(二)
  6. C++实现遍历链表一次求出中间的节点
  7. java 线程的函数_Java线程总结
  8. 人生规划五句话与你分享
  9. transformer 系列语音识别
  10. pytorch强化学习训练倒摆小车