华为嵌入式软件实习笔试3
《嵌入式软件开发笔试与面试手册》:https://blog.nowcoder.net/zhuanlan/jvN8gj
《嵌入式软件笔试-2023年真题汇总》:https://blog.nowcoder.net/zhuanlan/0oDWVm
获取公共链表片段
给定两个链表,获取两者中相同节点值的最大连续片段。如果没有公共片段,返回-1。
解答要求
时间限制: C/C++ 1000ms,其他语言: 2000ms内存限制: C/C++ 256MB, 其他语言: 512MB
输入
第一行表示链表1,第二行表示链表2,每条链表长度不超过20个元素,链表不会为空。
输出
公共链表片段
样例1
输入
1 2 2 3 9 1 5
9 2 2 3 6 8
输出
2 2 3
#include <iostream>
#include <string>
#include <set>
using namespace std;
int main() {
string nums1, nums2;
getline(cin, nums1);
getline(cin, nums2);
set<string> s;
int n = nums1.size(), m = nums2.size();
// 存储所有可能的子字符串到集合中
for (int i = 0; i < n; ++i) {
for (int j = i; j < n; ++j) {
s.insert(nums1.substr(i, j - i + 1));
}
}
string res = "";
// 查找最长的公共子字符串
for (int i = 0; i < m; ++i) {
for (int j = i; j < m; ++j) {
string sub = nums2.substr(i, j - i + 1);
if (s.find(sub) != s.end() && sub.size() > res.size()) {
res = sub;
}
}
}
if (!res.empty()) {
cout << res << endl;
} else {
cout << -1 << endl;
}
return 0;
}
矿车运输成本
露天矿采矿作业的特点是规模大,矿石和废料的移动量达到百万吨,运输成本开销较大,需要寻求一种最优的运输路径节省成本。
已知矿场可以划分成N*M的网格图,每个网格存在地形的差异,因此通过不同网格时,成本开销存在差异。
网格有以下5种类型:
1、标志为'S’的网格为运输起点;
2、标志为'E”的网格时运输终点;
3、标志为'B’的网格为阻塞点,不允许通行;
4、标志为'C'的网格为检查点,矿车在运输路径中,至少需要进入一次检查点。
5、标志为‘数字”的网格,其数字表示经过该网格的成本开销。
运输矿车只能上下左右4个方向运行,不允许斜对角进入其他网格。必要时可重复进入网格。
请根据输入的网格图,寻求一条从S网格到E网格,并且至少经过一次检查点的最低成本运输路径,并输出其成本开销。
解答要求
时间限制: C/C++ 1000ms,其他语言: 2000ms内存限制: C/C++ 256MB, 其他语言: 512MB
输入
第一行:网格图的行数N[3,200]和网格图的列数M[3,200],使用空格隔开。
第二行至第N+1行:网格图每一行的元素,可以为'S’,E’,'B',‘C'或者数字[0,100],并且有且仅有一个'S’和一个'E’,同时存在一个或者多个‘C',并依次使用空格隔开。
输出:
第一行:输出运输最低成本开销。如果不存在可达通路,请输出-1
示例 1:
输入:
3 3
S 4 5
7 B 3
C 9 E
输出:
16
import heapq
from math import inf
# 读入矩阵的行数和列数
n, m = map(int, input().split())
matrix = []
# 读入矩阵内容
for _ in range(n):
matrix.append(input().split())
def solve(st_i: int, st_j: int):
# 初始化距离矩阵和访问状态矩阵
distance = [[inf] * m for _ in range(n)]
visited = [[False] * m for _ in range(n)]
distance[st_i][st_j] = 0
h = []
heapq.heappush(h, [0, st_i, st_j])
# 使用优先队列进行Dijkstra算法
while h:
d, i, j = heapq.heappop(h)
if visited[i][j]: continue
visited[i][j] = True
# 检查四个方向上的相邻单元
for ni, nj in ((i + 1, j), (i, j + 1), (i - 1, j), (i, j - 1)):
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏主要发布2025届嵌入式软件开发相关岗位笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。

