2023大厂真题提交网址(含题解):
www.CodeFun2000.com(http://101.43.147.120/)
最近我们一直在将收集到的机试真题制作数据并搬运到自己的OJ上,供大家免费练习,体会真题难度。现在OJ已录入50+道2023年最新大厂真题,同时在不断的更新。同时,可以关注"塔子哥学算法"公众号获得每道题的题解。
完整真题解析: 【2023秋招】10月13日华为留学生校招三道题以及满分解析
第一题:花圃种植
题目内容
有 M M M 块花圃(使用 0 , 1 , 2 , . . . , M − 1 0,1,2,...,M-1 0,1,2,...,M−1方式连续编号),每种植物(植物使用 0 , 1 , 2 , . . . , N − 1 0,1,2,...,N-1 0,1,2,...,N−1 方式连续编号)需要种植到其中一块花圃上 ,
要求植物编号除以总花圃数的余数不能与所种植的花圃编号相同,种植方案要满足种植的花圃数目尽量多,多个花圃中的植物不能重样。
请编写一个程序, 统计所有满足条件的种植方案数目。
输入描述
输入为两个整数花圃数目 M M M 和 植物数量 N N N 。
1 ≤ M ≤ 1000 1 \leq M \leq 1000 1≤M≤1000 , 1 ≤ N ≤ 10000 1 \leq N \leq 10000 1≤N≤10000
输出描述
输出满足条件的种植方案数目
样例
输入
2 3
输出
2
第二题:计算座位最大利用数
题目内容
一列具有 m m m 个座位的火车,从起点到终点共停靠 n n n 个站点,站点编号从 0 0 0 到 n − 1 n-1 n−1 。
发车前有 x x x 名乘客预定了座位,因为预定数量可能超出座位数,为了保证效率最大化,请计算如何分配才能是座位利用率最大,并输出最大的座位利用数。
说明:
座位利用数定义为每个座位被使用的站数。
例如有两个座位,第一个座位从第 0 0 0 到 10 10 10 站有人坐(表示从 0 0 0 站上车, 10 10 10 站下车,第 10 10 10 站不占座,所以利用率是 10 − 0 = 10 10-0=10 10−0=10 ),第二个座位从第 1 1 1 到 9 9 9 站有人坐,则座位利用率为 ( 10 − 0 ) + ( 9 − 1 ) = 18 (10-0)+(9-1)= 18 (10−0)+(9−1)=18 乘客在某站下车后,其他乘客从这一站就可以开始使用这个座位;
无需考虑乘客需要更换座位的问题,保证任意时刻列车上乘客数量不超过 m m m 即可。
输入描述
第一行输入 m m m 、 n n n 和 x x x 三个数字,分别表示列车座位数量、停靠站点数量和预定乘客数。
接下来 x x x 行输入,表示 x x x 条预定记录,每行有两个输入,分别表示此预定记录的上车站点和下车站点。
1 ≤ m ≤ 9 1 \leq m \leq 9 1≤m≤9 , 2 ≤ n ≤ 20 2\leq n \leq 20 2≤n≤20 , 1 ≤ x ≤ 9 1 \leq x \leq 9 1≤x≤9
输出描述
输出一个数字,表示座位最大利用数。
样例
样例一:
输入
2 11 4
0 1
1 9
0 10
3 8
输出
19
样例解释:
选择前三位乘客可以使座位利用率最大: 19 = ( 1 − 0 ) + ( 9 − 1 ) + ( 10 − 0 ) 19=(1-0)+(9- 1)+ (10- 0) 19=(1−0)+(9−1)+(10−0) 。若选择后两位乘客,则利用率为 15 − = ( 10 − 0 ) + ( 8 − 3 ) 15-=(10-0)+(8- 3) 15−=(10−0)+(8−3) 。若选择全部四位乘客,则第 3 3 3 到 8 8 8 站车上存在 3 3 3 名乘客,超出列车座位数。
样例二:
输入
1 11 2
0 5
5 10
输出
10
样例解释:
两位乘客可以使用的座位利用率最大: 10 = ( 5 − 0 ) + ( 10 − 5 ) 10 = (5-0) + (10-5) 10=(5−0)+(10−5) 。
第三题:循环依赖检测
题目内容
在软件架构设计和实现中,出现模块之间循环依赖说明软件设计和实现不太合理,不符合好的软件实践。很多软件会针对循环依赖问题进行检测。
给定模块的函数列表和函数调用关系后,请给出相关的循环依赖模块。
循环依赖的定义:2个及2个以上的模块相互依赖形成环,即循环依赖。
如有三个模块A、B、C,依赖关系为:A->B->C->A, 即这三个模块形成了循环依赖。
另外,通过公共节点形成的大环也属于循环依赖。如A->B->D->E->B->C->A,则与A形成循环依赖的大环模块包括BCDE。
输入描述
输入包含模块名称,包含的函数,以及函数的调用关系。
第一行输入一个整数 n n n ,代表模块以及其包含的函数的条目数,后面 n n n 行,每行第一个为模块名称,后面为该模块包含的函数名称,中间均由空格隔开。
如 n = = 7 n == 7 n==7,输入如下:
A a1 a2 a3
B b1 b2 b3
C c1 c2 c3
D d1 d2 d3
E e1 e2 e3
F f1 f2 f3
G g1 g2 g3
接下来然后输入一个整数 m m m ,代表函数的调用关系的条目数,后面 m m m 行,每行第一个为调用名称,后面为被调用函数,中间均由空格隔开。
如 m = = 5 m == 5 m==5,输入如下:
a1 b1 b2
b2 b1 c2 d1
c2 a3
d2 e1
e1 b1 f2 g3
最后输入一个字符串 S S S ,代表指定模块。
如 S = A S = A S=A
规格说明:
- 模块名和函数名均为字符串,字符串长度不超过 64 64 64 ,目不会存在特殊字符
- 模块和函数个数不超过 20 20 20
- 每个函数调用其他函数不会超过 5 5 5 个
- 模块名称和函数名称全局唯一
- 一个函数只能属于一个模块
- 模块名称不会为字符串 n u l l null null
输出描述
与指定模块形成循环依赖的其他模块。
按名称的字典序输出。
如果不存在,则输出 n u l l null null (注意是字符串"null",不是空指针),
比如上述例子的输入 对应输出为: B C D E B C D E BCDE
样例
样例一:
输入
8
A a1 a2 a3
B b1 b2 b3
C c1 c2 c3
D d1 d2 d3
E e1 e2 e3
F f1 f2 f3
G g1 g2 g3
H h1 h2
5
a1 b1 b2
b2 b1 c2 d1 h1
c2 a3
d2 e1
e1 b1 f2 g3
A
输出
B C D E
样例解释:
根据调用关系,与 A A A 模块形成循环依赖的其他模块为 B C D E B C D E BCDE
(注意: 这里相当于 A B C ABC ABC 和 B D E BDE BDE 两个小环,不止是统计 A->B->C->A 的小环,需要统计 A->B->D->E->B->C->A 对应的大环)