华为OD机试 - 九宫格按键输入 - 逻辑分析(Python/JS/C/C++ 2025 B卷 200分)

一、题目描述

九宫格按键输入,输出显示内容,有英文和数字两个模式,默认是数字模式,数字模式直接输出数字,英文模式连续按同一个按键会依次出现这个按键上的字母,如果输入" "或者其他字符,则循环中断。

字符对应关系如图:

在这里插入图片描述

二、输入描述

输入范围为数字0~9和字符#、/,输出屏幕显示,例如在数字模式下,输入1234,显示1234;在英文模式下,输入1234,显示,adg。

三、输出描述

#用于切换模式,默认是数字模式,执行#后切换为英文模式, /表示延迟,例如在英文模式下,输入22/222,显示为bc;

英文模式下,多次按同一键,例如输入22222,显示为b;

四、测试用例

</
输入 输出 说明
123#222235/56 123adjjm
123#2222#3#5//5556 123a3jlm
### 华为实习题目及相关练习 对于希望参加华为实习并准备其的同学来说,了解常见的题目及其解题方法至关重要。以下是关于华为OD的一些高频手撕代码题以及对应的解决思路[^2]。 #### 常见的华为OD题目类 以下是一些典型的华为OD题列表: 1. **九宫格全排列** - 使用回溯法实现所有可能的排列组合。 - 提供多种语言版本(C、C++Python、Java、JavaScript)解决方案[^4]。 2. **扑克牌消除逻辑** - 设计一种算法来模拟扑克牌游戏中的消除过程。 - 关键在于如何高效地匹配和移除符合条件的牌组。 3. **配资源ID逻辑+集合** - 解决方案涉及集合操作与冲突检测。 - 可以通过哈希表优化查找速度。 4. **批量初始化次数排序** - 排序问题是基础但重要的一环。 - 考虑稳定性与时效性的平衡。 5. **云上故障逃生优先队列 (Dijkstra 算法)** - 应用经典的 Dijkstra 最短路径算法求解最优逃生路线。 - 特别注意图结构的设计与权重赋值。 6. **购物系统的降级策略 ()** - 当系统负载过高时,采用二查找快速定位可降级的服务模块。 - 此类问题通常考察数据结构的理解能力。 7. **服务器消耗统计区间问题** - 利用滑动窗口技术处理连续区间的动态变化。 - 时间复杂度需尽可能低。 8. **计算云服务 DI 值 (哈希表)** - 构建高效的哈希映射存储大量离散数值。 - 并发访问场景下的线程安全也是考量因素之一。 9. **树上逃离 (图:深度优先)** - 将整棵树视为无向连通图,并对其进行层次划- 结合广度优先搜索(BFS),找到最短时间内抵达目标节点的方法[^5]。 #### 示例代码片段 下面提供一道典型题目——`树上逃离`的具体实现方式作为参考: ```cpp #include <iostream> #include <queue> #include <vector> using namespace std; struct Node { int id; vector<int> neighbors; }; int bfsEscapeTime(vector<Node>& graph, int start, int princess) { queue<pair<int, int>> q; // {currentNode, time} vector<bool> visited(graph.size(), false); q.push({start, 0}); visited[start] = true; while (!q.empty()) { auto [nodeId, currentTime] = q.front(); q.pop(); if (nodeId == princess) return currentTime; for(auto neighbor : graph[nodeId].neighbors){ if(!visited[neighbor]){ visited[neighbor]=true; q.push({neighbor,currentTime+1}); } } } return -1; // If unreachable } // Example usage: /* graph[0].id=0; graph[0].neighbors={1}; graph[1].id=1; graph[1].neighbors={0,2}; graph[2].id=2; graph[2].neighbors={1,3}; graph[3].id=3; graph[3].neighbors={2};*/ ``` 此段代码展示了基于BFS算法寻找从起点到终点所需最少步数的过程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值