题解 P6263 【[COCI2014/2015#3]STROJOPIS】

· · 题解

前言 :

鱼人节来发一篇题解 qwq

一道练习暴力的及其有意思的题——

题面传送门

博客食用体验更佳

思路 :

本题主要就是给你一串要敲的键,已知你的 8 个手指(拇指没有)分别按哪些键,然后让你输出每根手指的按键次数。

很明显这是一个暴力枚举的题,只要循环每个要敲的键,然后判断是哪个手指敲它,把每个手指视为一个累加器累加就行了。具体哪个手指敲哪些键题目中给了个大图说明了。还有一点就是题目中有一句话:

从左到右观察到的每个手指的按键次数

所以这里的输出顺序就是题目中键盘从左到右的顺序,注意这个题目中的键盘有个小小的漏洞,大家都知道 1 左边的键是·(由于英文的不好打,所以这里用的是中文的),题目中把这个块也标黄了,但它实际上是不需要判断的。

代码 :

#include<bits/stdc++.h>//by btng_smith666 juruo
using namespace std;//暴力大法好!!! 
string str;//输入中的字符串 
int a[10];//8个手指,这里我用一个数组表示 
int main()
{
    cin>>str;
    for(int i=0;i<str.size();i++)//循环判断每个要敲的键 
    {
        if(str[i]=='1' || str[i]=='Q' || str[i]=='A' || str[i]=='Z')
            a[1]++;
        if(str[i]=='2' || str[i]=='W' || str[i]=='S' || str[i]=='X')
            a[2]++;
        if(str[i]=='3' || str[i]=='E' || str[i]=='D' || str[i]=='C')
            a[3]++;
        if(str[i]=='4' || str[i]=='R' || str[i]=='F' || str[i]=='V' || str[i]=='5' || str[i]=='T' || str[i]=='G' || str[i]=='B')
            a[4]++;
        if(str[i]=='6' || str[i]=='Y' || str[i]=='H' || str[i]=='N' || str[i]=='7' || str[i]=='U' || str[i]=='J' || str[i]=='M')
            a[5]++;
        if(str[i]=='8' || str[i]=='I' || str[i]=='K' || str[i]==',')
            a[6]++;
        if(str[i]=='9' || str[i]=='O' || str[i]=='L' || str[i]=='.')
            a[7]++;
        if(str[i]=='0' || str[i]=='P' || str[i]==';' || str[i]=='/' || str[i]=='-' || str[i]=='[' || str[i]==']' || str[i]=='=' || str[i]=='\'')//注意这里判断字符 ' 的时候需要加一个 \ 
            a[8]++;
    }
    for(int i=1;i<=8;i++)//从左到右输出八个指头的答案就行 
        printf("%d\n",a[i]);
    return 0;
}

本篇题解到这里就结束了,点个赞再去把它 A 掉吧 qwq !