华为秋招笔试真题

1.养猪场防疫

老李在多年前承包了一个养猪场,并引入了若干只种猪,经过这些年的经营,现在养猪场有N只猪,编号从0到N-1(每只猪无论生死都有唯一的编号);
老李在每只猪生产的时候记下了生产的母猪和出生的小猪,格式:x y1 y2 y3…([注:x为猪妈妈,y1、 y2、y3….为新生的猪惠,以上编码均在0…N-1内,每只猪可以多次生产,每个猪息只有一个猪妈妈);
为了防疫需要,要检查任意两只猪是否有亲戚关系(两只猪具有相同的祖先),并计算出关系亲疏情况(关系距离,相同编号距离为0).

解答要求
时间限制:CIC++1000ms.其他语言:2000ms内存限制:CIC++ 256MB,其他语言:512MB
输入
第一行输入总数N
第二行表示后续生产记录行数M,
后续M行输入生产记录,以空格分隔x y1 y2 y3
最后一行输入m1, m2:表示待检查的m1和m2编号【取值范围】
0<N<=1000000000 0<=M<10000
输出
一个整数,表示m1和m2之间的关系距离,无亲戚关系输出-1
样例1
输入:
3
1
0 1 2
0 1
输出:1
解释:0号生产了1号和2号
所以0号和1号是有亲戚关系(0-1),且关系距离为1

2.速战速决

在一个MxN的街区中,有一个士兵S和一个敌人E,标识X为无法通过的街区,标识B为可以通过的街区;士兵在一个单位时间内可以从一个街区移动到相邻的街区(士兵每次只能水平或者垂直方向移动一个街区);士兵每次改变方向时,需要额外花费—个单位的时间(士兵第一次移动—个街区的时候,不用考虑其初始方向,即只需要—个单位时间即可到达相邻街区).计算士兵S最少需要多少时间才能到达E所在的街区。

解答要求
时间限制:C/C++1000ms,其他语言:2000ms
内存限制:CIC++ 256MB,其他语言:512MB
输入
第一行为两个数字,表示街区的大小,M行,N列;(1年M,N <=1000,M、N不同时为1)
接下来M行,每行N个字母,字母S表示士兵所在街区,字母E表示敌人所在街区,字母X表示障碍,字母B表示可以经过的街区。(只有1个S,一个E)
输出
最少需要的时间,当士兵S永远无法到达敌人E所在的街区时,输出-1
样例1
输入:
6 6
SBBBBB
BXXXXB
BBXBBB
XBBXXB
BXBBXB
BBXBEB
输出:
13

3.智慧停车

某公司停车场安装了一套智慧停车系统,在车辆进入停车场时,系统会自动计算一条最短路径,并为这一条路径在地面点亮导路灯,如果没有可用停车位,则在入口亮起红灯,如下图是某一层停车场的平面图(上北下南左西右东),开口处为停车场入口。
为了简化处理,我们使用起始的车道坐标表示停车场入口,用一个二维数组来记录当前的停车情况,如:

8 15 8 1
1 2 2 1 2 2 1 2 2  1 2 2 1 2 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 2 1 0 1 3 2 2 2 1 2 2 2 
1 2 1 2 2 0 1 3 1 2 1 2 1 2 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 1 2 2 2 0 2 2 1 1 0 1 2 1 2
2 2 2 2 2 2 0 2 2 2 0 2 2 2 2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

1.8 15表示矩阵的行数M值8,和列数N值15;
2.81表示入口坐标(分别表示行和列,行列号均从1开始计数):8代表第八行,1代表第一列,以空格分隔;即表示入口时绿灯从这个坐标点开始点亮;
3.矩阵数据代表停车场情况:0代表车道;1代表空车位;2代表已停车车位;3代表柱子,不可通过;
请你根据停车场的情况,点亮一条通往可用车位的最短路径。
路径规则:
1.所有车位为南北向,车辆只能从车位的南侧或北侧的车道停入车位,不能横向停车;
2.如果存在相同距离的目标车位,优先选择行坐标较小的,其次选择列坐标较小的: 图中:6 10和6 12 选择610;1 7和3 7选择1 7;到达同一个停车位有多条相同距离的路径,优先选择路径节点行坐标和较小的,其次选择列坐标和较小的
不需校验输入的有效性;

解答要求
时间限制:C/C++1000ms,其他语言:2000ms内存限制:C/C++256MB,其他语言:512MB
给定一个起点坐标:i j和一个M*N的停车场二维数组描述图;M(5<=M<= 100) N(5<=N <=100)i (1 <=i<= M)j(1<=j <=N)
样例1
输入:
5 6 2 1
2 1 2 2 1 2 
0 0 0 0 0 0
2 1 2 1 2 1 
1 1 2 1 2 2 
0 0 0 0 0 0
输出:
2 1 2 2 1 2
解释:
1.入口为21,且11和31车位已经占用,向前到2 2;
2.1 2和3 2都可以停车,取行坐标较小的1 2进行停车;
3.输出路径为2 1 2 2 1 2
样例2
输入:
5 9 5 5
2 2 1 2 1 2 1 2 1
0 0 0 0 0 0 0 0 0
2 2 1 1 0 1 2 1 2 
2 2 2 2 0 2 2 2 2
0 0 0 0 0 0 0 0 0
输出:
5 5 4 5 3 5 2 5 1 5
解释:
1.入口为5 5;
2.3 4和3 6是3 5的横向相邻坐标,不能直接停车;
3.1 5的停车步数最小,直接进行停车;

猜你喜欢

转载自blog.csdn.net/mathlxj/article/details/131790505