站外题求助
  • 板块学术版
  • 楼主Konnyaku_q
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/10/8 21:23
  • 上次更新2023/11/2 14:52:39
查看原帖
站外题求助
512587
Konnyaku_q楼主2023/10/8 21:23

九宫格输入法适合在手机上使用,它在屏幕上的布局如下

1 2 abc 3 def

4 ghi 5 jkl 6 mno

7 pqrs 8 tuv 9 wxyz 0

如果要打出一个 x,就需要按两下 9。第一次按 9 号键会出现 w,按第二次才会将 w 改成 x。注意 0 号键的作用是打出一个空格。

给定一些仅有小写字母和空格组成的字符序列,请计算用九宫格输入法总计需要按多少次键。

输入格式 单个字符序列:表示打印的内容,保证只由小写字母及空格组成,且两个单词之间有且只有一个空格。

输出格式 单个整数:表示按键的总次数。

由于本人太弱了,只能打表了

#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<cmath>
#include<queue>
#include<algorithm>
using namespace std;
long long si,san,er,yi,kong;
string s;
int main()
{
  getline(cin,s);
  
  for(int i=0;i<s.length() ;i++)
  {
  	if(s[i]==' ')
  	{
  		kong++;
	  }
  }
  for(int i=0;i<s.length() ;i++)
  {
  	if(s[i]=='a')
  	{
  		yi++;
	  }
	else if(s[i]=='d')
	{
		yi++;
	}
	else if(s[i]=='g')
	{
		yi++;
	}
	else if(s[i]=='j')
	{
		yi++;
	}
	else if(s[i]=='m')
	{
		yi++;
	}
	else if(s[i]=='p')
	{
		yi++;
	}
	else if(s[i]=='t')
	{
		yi++;
	}
	else if(s[i]=='w')
	{
		yi++;
	}
	
  }
    for(int i=0;i<s.length() ;i++)
  {
  	if(s[i]=='b')
  	{
  		er+=2;
	  }
	else if(s[i]=='e')
	{
		er+=2;
	}
	else if(s[i]=='h')
	{
		er+=2;
	}
	else if(s[i]=='k')
	{
		er+=2;
	}
	else if(s[i]=='n')
	{
		er+=2;
	}
	else if(s[i]=='q')
	{
		er+=2;
	}
	else if(s[i]=='u')
	{
		er+=2;
	}
	else if(s[i]=='x')
	{
		er+=2;
	}
  }
      for(int i=0;i<s.length() ;i++)
  {
  	if(s[i]=='c')
  	{
  		san+=3;
	  }
	else if(s[i]=='f')
	{
		san+=3;
	}
	else if(s[i]=='i')
	{
		san+=3;
	}
	else if(s[i]=='l')
	{
		san+=3;
	}
	else if(s[i]=='o')
	{
		san+=3;
	}
	else if(s[i]=='s')
	{
		san+=3;
	}
	else if(s[i]=='v')
	{
		san+=3;
	}
	else if(s[i]=='z')
	{
		san+=3;
	}
  }
  for(int i=0;i<s.length() ;i++)
  {
  	if(s[i]=='s')
  	{
  		si+=4;
	  }
	else if(s[i]=='z')
	{
		si+=4;
	}
  }
  cout<<si+er+san+yi;
  
  
}


2023/10/8 21:23
加载中...