[COCI2014-2015#2] MOBITEL 题解
题目大意
有一只蚂蚱,它把手机掉到了水坑里。然后它把手机捞出来,发现手机键盘都坏了。
那么手机没有坏之前就是介个样子的:
我们想打字的话就需要按下相应的数字键。比如说我们想打出 "a" ,就需要按一下数字键 1 。又比如说我们想打出 "f" ,就要摁三下 3 。
- 补充1:当然,现在数字键 1 和数字键 0 都是没有用的。
- 补充2:如果我们想打出 "ab",那我们应该怎么摁呢?难道是摁三下 2 ?这样显然有歧义。所以我们应该在摁下一次 1 之后摁下 "#" 再摁两下 1 。就是这样 "1#11"。
蚂蚱的手机不是被泡坏了嘛,所以各个键起的作用就不一样了。比如说摁下了 3 就相当于摁下了 2 ,所有的按键的作用都被换了一下。
在按键 3 和按键 2 的作用互换的情况下,想打出 "ab", 就得 "3#33"。
这个时候,蚂蚱想给自己的女朋友发信息(马勒戈壁的,蚂蚱都有npy了我倒是被我npy绿了,我要杀了蚂蚱!!!) 好,它现在不会发了,然后就来请求你。你要输出它怎么按键才能发送蚂蚱给出的消息。
思路
本人叙事能力堪忧,所以题目bb了很久,不好意思~
我们不得不做的一个任务就是把各个数字键对应的字母们都存进来,好,有了这样一个初始化,我们看到输入,直接把对应的数字键的字母copy过来,第一步完成了。看一下代码理解一下。
//这个是初始化
s[1] = " "; s[2] = "abc"; s[3] = "def";
s[4] = "ghi"; s[5] = "jkl"; s[6] = "mno";
s[7] = "pqrs"; s[8] = "tuv"; s[9] = "wxyz";
//键盘坏了,改变
for (int i = 1; i <= 9; ++i)
cin >> n[i];
for (int i = 1; i <= 9; ++i)
c[i] = s[ n[i] ];
第二步,我们直接暴力枚举蚂蚱要打的每一个字,然后在所有的键盘里找,找到了,就输出。然后跟前面的比较一下,如果一样就先输出一个 "#" 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)