【秋招笔试】10.08华为荣耀秋招(已改编)-三语言题解
🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试
💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历
✨ 本系列打算持续跟新
春秋招笔试题
👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸
✨ 笔试合集传送们 -> 🧷春秋招笔试合集
🍒 本专栏已收集
100+
套笔试题,笔试真题
会在第一时间跟新🍄 题面描述等均已改编,如果和你笔试题看到的题面描述不一样请理解,做法和题目本质基本不变。
🍹 感谢各位朋友们的订阅,你们的支持是我们创作的最大动力 💞
🌈 HONOR荣耀秋招笔试,来啦!!!
🍥 本次难度不大,实际考试的时候T2有点谜语,第三题难度中等偏上,需要熟练的DP底子
1️⃣ 模拟+排序题,主要考查语法
2️⃣ 简单的完全背包问题,不难,只是原题面比较谜语
3️⃣ 前缀和+动态规划+思维,对于一步到位比较困难的题目,我们拆成两步分别做。
🔐01.密码解锁 评测链接🔗
问题描述
LYA 是一家科技公司的安全专家。最近,她接到了一项特殊任务:破解一个神秘的密码锁。这个密码锁的特点是,它的密码由一串包含英文字母、数字和特殊符号的字符串组成。然而,真正的密码只包含其中的数字部分,而且需要按照从小到大的顺序排列。LYA 需要编写一个程序来提取这些数字并正确排序,以便快速破解密码。
输入格式
输入为一行字符串,包含英文字母、数字以及特殊符号等 ASCII 范围内字符。
输出格式
输出一行字符串,包含输入字符串中的所有数字字符,并按数字大小从小到大排序。重复的数字不合并。
样例输入1
3d50J,Aa3
样例输出1
0335
样例输入2
H@ck3r_101
样例输出2
0113
数据范围
- 输入字符串长度:
- 字符串中的字符均为 ASCII 码可表示的字符
样例解释
样例1 | 输入字符串中包含数字 3、5、0、3,按从小到大排序后输出 0335 |
样例2 | 输入字符串中包含数字 3、1、0、1,按从小到大排序后输出 0113 |
题解
模拟+排序
主要步骤如下:
-
遍历字符串,提取数字字符:
- 可以使用一个循环遍历输入的字符串。对于每个字符,检查它是否是数字(可以使用内置的 isdigit() 方法)。如果是数字,就将它保存下来。
-
将提取的数字转换为整数并排序
-
将排序后的数字转回字符串并输出
- 排序完成后,需要将这些数字重新转换为字符串。这里要注意,需要保持每个数字的原始形式,不要合并重复的数字。
参考代码
- Python
def extract_and_sort_numbers(s):
# 提取所有数字字符
nums = [int(c) for c in s if c.isdigit()]
# 排序数字
nums.sort()
# 转换回字符串并连接
return ''.join(map(str, nums))
# 读取输入
input_str = input().strip()
# 处理并输出结果
print(extract_and_sort_numbers(input_str))
- Java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
System.out.println(extractAndSortNumbers(input));
}
public static String extractAndSortNumbers(String s) {
// 提取数字
List<Integer> nums = new ArrayList<>();
for (char c : s.toCharArray()) {
if (Character.isDigit(c)) {
nums.add(c - '0');
}
}
// 排序
Collections.sort(nums);
// 构建结果字符串
StringBuilder result = new StringBuilder();
for (int num : nums) {
result.append(num);
}
return result.toString();
}
}
- Cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string extractAndSortNumbers(const string& s) {
// 提取数字
vector<int> nums;
for (char c : s) {
if (isdigit(c)) {
nums.push_back(c - '0');
}
}
// 排序
sort(nums.begin(), nums.end());
// 构建结果字符串
string result;
for (int num : nums) {
result += to_string(num);
}
return result;
}
int main() {
string input;
getline(cin, input);
cout << extractAndSortNumbers(input) << endl;
return 0;
}
🍰 02.K小姐的蛋糕店订单处理 评测链接🔗
问题描述
K小姐经营着一家蛋糕店,最近接到了多个大型派对的订单。每个订单都需要制作一定数量的小蛋糕,并且需要一定数量的烤箱同时工作才能在规定时间内完成。K小姐想知道,在现有的烤箱数量下,她最多能同时制作多少个小蛋糕。
K小姐手头有以下订单:
- 300个小蛋糕,需要20个烤箱
- 500个小蛋糕,需要30个烤箱
- 620个小蛋糕,需要50个烤箱
- 370个小蛋糕,需要30个烤箱
- 400个小蛋糕,需要50个烤箱
- 450个小蛋糕,需要30个烤箱
- 380个小蛋糕,需要40个烤箱
- 150个小蛋糕,需要10个烤箱
K小姐希望在不超过现有烤箱数量的情况下,最大化同时制作的小蛋糕数量。每个订单要么完全接受,要么完全拒绝,不能部分完成。
输入格式
输入一个整数 ,表示K小姐蛋糕店现有的烤箱数量。
输出格式
输出一个整数,表示在不超过现有烤箱数量的情况下,K小姐最多能同时制作的小蛋糕数量。
样例输入1
10
样例输出1
150
样例解释
样例1 | 当烤箱数量为10时,K小姐只能接受最后一个订单(150个小蛋糕,需要10个烤箱),因此最多能同时制作150个小蛋糕。 |
数据范围
题解
动态规划之完全背包
宝子们可能会好奇,为啥这题目要求和条件这么怪。
我只能说根据真实事件(s卷)改编,原题面评价为:
猜谜语
这道题目本质上是一个完全背包问题。每个订单可以看作是一个"物品",订单所需的烤箱数量是"重量",订单中的小蛋糕数量是"价值"。目标是在不超过总烤箱数量(背包容量)的情况下,最大化小蛋糕的数量(总价值)。
解题步骤如下:
-
定义一个一维数组 ,其中 表示使用 个烤箱时能制作的最大小蛋糕数量。
-
初始化 数组,所有元素初始值为0。
-
遍历每个订单,对于每个订单:
- 从前向后遍历 数组(从 订单到 所需烤箱数)
- 对于每个 ,更新
-
最终, 就是答案。
这个解法的时间复杂度是 ,其中 是订单数量, 是烤箱数量。在给定的数据范围内(),这个复杂度是可以接受的。
参考代码
- Python
# 定义订单列表,每个元素为 [小蛋糕数量, 所需烤箱数]
orders = [
[300, 20], [500, 30], [620, 50], [370, 30], [400, 50],
[450, 30], [380, 40], [150, 10]
]
# 读取输入的烤箱数量
x = int(input())
# 初始化dp数组
dp = [0] * (x + 1)
# 遍历每个订单
for cakes, ovens in orders:
# 从后向前遍历,避免重复选择订单
for j in range(ovens, x + 1):
# 更新dp值
dp[j] = max(dp[j], dp[j - ovens] + cakes)
# 输出结果
print(dp[x])
- Java
import java.util.*;
public class Main {
public static void main(String[] args) {
// 定义订单列表
int[][] orders = {
{300, 20}, {500, 30}, {620, 50}, {370, 30}, {400, 50},
{450, 30}, {380, 40}, {150, 10}
};
// 读取输入的烤箱数量
Scanner scanner = new Scanner(System.in);
int x = scanner.nextInt();
// 初始化dp数组
int[] dp = new int[x + 1];
// 遍历每个订单
for (int[] order : orders) {
int cakes = order[0];
int ovens = order[1];
// 从后向前遍历,避免重复选择订单
for (int j = ovens; j <= x; j ++) {
// 更新dp值
dp[j] = Math.max(
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
这里收集了超全的互联网春秋招笔试题,欢迎大家的订阅,会持续跟新的