1 条题解

  • 0
    @ 2025-8-24 22:19:06

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar btng_smith666
    AFOed

    搬运于2025-08-24 22:19:06,当前版本为作者最后更新于2020-04-01 10:12:34,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    前言 :

    鱼人节来发一篇题解 qwq

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

    题面传送门

    博客食用体验更佳

    思路 :

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

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

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

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

    代码 :

    #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 !

    • 1

    信息

    ID
    5290
    时间
    1000ms
    内存
    32MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者