1 条题解
-
0
自动搬运
来自洛谷,原作者为

LoserCode
我没猜错的话,我已经猜对了搬运于
2025-08-24 22:33:42,当前版本为作者最后更新于2021-09-10 22:18:04,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题意简述
给出一字符串,判断其是否能与给定的字符串输入顺序相符。
题目分析
这种键盘问题通常要用到一个简单算法——构造数组,也就是大家所说的打表。
打表(用空间换时间)————一般是指将所有需要用到的结果先计算出来,然后后面需要用到时就可以直接查表获得。
那么本题所要保存的东西就是输入每个字母所需的按键, : 输入 需要按 2 ,那么就记为 ,以此类推。
如果这张表打好了,那么剩下的操作只剩下与给定的字符串比较,这里又有一个难点,输入的是字符串,要将其转化为数字比对,这里要用 ASCII 表。

由表可知,需判断的小写字母字符串需要 也就是 可以得到十进制数字(也就是可以进行比较的),给定的字符串要 ,也就是 得到十进制数字。
Code
#include<bits/stdc++.h> using namespace std; int x[26]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9};//构造数组 char a[1001][1001],b[1001]; int main() { int n,ans=0,len=0; cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; cin>>b;len=strlen(b); for(int i=1;i<=n;i++) { int l=strlen(a[i]); if(l==len) { bool flag=true; for(int j=0;j<l;j++)if(x[a[i][j]-97]!=b[j]-48) flag=false; if(flag)ans++;//判断并统计答案 } } cout<<ans; return 0; }温馨提示:本题卡数组大小记得把数组开大点哦。
- 1
信息
- ID
- 6845
- 时间
- 2000ms
- 内存
- 64MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者