题解 CF474A 【Keyboard】

这道题其实是一道大水题,但是本蒟蒻一开始竟然昏了头,手敲出每一个的前面一项或后面一项

if(a=='w') cout<<'e';
if(a=='e') cout<<'r';
if(a=='r') cout<<'t';
if(a=='t') cout<<'y';
……

(我可能抽风了)

其实这道题稍加思考就会想出用数组存储键盘的方式

代码实现:

char a[50] = {"qwertyuiopasdfghjkl;zxcvbnm,./"};    //用数组存储键盘

然后就是来模拟一便了,用循环嵌套来改变当前打错的字符

代码实现:

for(int j=0;j<=29;j++)  //利用第二层循环找出和当前字符的匹配项
{
    if(s[i]==a[j])
    {
        if(k=='R')   //判断是朝哪个方向移动
        {
            cout<<a[j-1];   //输出前一个
        }
        else   //判断是朝哪个方向移动
        {
            cout<<a[j+1];   //输出后一个
        }
    }
}

接下来就是整体代码:

泥萌肯定就想看这个

#include <iostream>
using namespace std;
char a[50] = {"qwertyuiopasdfghjkl;zxcvbnm,./"};    //用数组存储键盘
int main(){
    char k;
    string s;
    cin>>k>>s;  //因为本题没有空格,所以简简单单用cin
    for(int i=0;i<s.size();i++)
    {
        for(int j=0;j<=29;j++)  //利用第二层循环找出和当前字符的匹配项
        {
            if(s[i]==a[j])
            {
                if(k=='R')   //判断是朝哪个方向移动
                {
                    cout<<a[j-1];   //输出前一个
                }
                else   //判断是朝哪个方向移动
                {
                    cout<<a[j+1];   //输出后一个
                }
            }
        }
    }
    cout<<endl;
    return 0;   //完美结束!【放烟花】
}

 上一篇
题解 CF450A 【Jzzhu and Children】 题解 CF450A 【Jzzhu and Children】
前置知识:我们在这题用到的算法是STL中的queue 先来熟悉一下queue 定义 #include //万能头也包含 详细用法: 定义一个queue的变量 queue a 查看是否为空范例 a.empt
2020-04-10
下一篇 
题解 CF581B 【Luxurious Houses】 题解 CF581B 【Luxurious Houses】
题目解析:给你n栋房子,问你第i栋房子要再搭几层才能比它后面所有的房子高 (注意:是要严格大于,不能等于) 所以我们只要找到第i栋房子后面最高的一栋,然后比较 样例说明:5 1 2 3 1 2 第1栋房子高度为1,身后最高的房子高度为
2020-04-10
  目录