【华为云计算开发岗笔试题】2020秋招华为第一次笔试
问题一
公司委派几名项目经理组织发传单,项目经理委派组员发传单,组员管理外包人员,外包人员发送传单。每个外包人员当天下班后上报发送传单的数量;请完成项目经理、组员、外包人员当天完成传单数的统计;
并按照如下格式的树形结构输出项目经理、组员、外包人员发送的传单数量。
输入描述:
performance块表示每名外包人员发送的传单数量,每行一个外包人员,输入格式为:外包人员,传单数。
organization块表示项目经理、组员和外包人员的从属关系,输入格式为:经理、组员、外包人员。
输出描述:
项目经理<传单数>
-组员<传单数>
–外包人员<传单数>
组员前面用单减号’-’,外包人员前面用双减号’–’;输出每一行的行尾使用换行符’\n’,不包含其他任何空白字符;不包含空白行。;
项目经理->组员->外包依次按传单数量降序排列,如果传单数量一样,按照名字升序排序。
示例:
输入
performance
Adam,125
Andy,110
Bill,92
Evan,154
organization
Aaron,Abel,Adam
Aaron,Abel,Andy
Aaron,Jone,Bill
Aaron,Jone,Evan
eof
输出
Aaron<481>
-Jone<246>
–Evan<154>
–Bill<92>
-Abel<235>
–Adam<125>
–Andy<110>
备注
外包人员总数不会超过100个;
不会出现一个外包人员被不同组员管理的情况,也不会出现一个组员属于不同项目经理的情况;
每名外包人员最大发送传单数不超过1000;
问题二
一次完整的基因测序流程其实是由很多小任务组成的。任务之间又是有顺序要求的,也就是某个任务需要依赖其他任务先完后自己才能开始执行。例如c:[a:b]表示,c任务亿来a任务,也依b任务,也就是a执行完,且b任务执行完后,才能执行c。
同时基因测序的每个小任务都有自己的运行时长,没有依赖关系的任务可以同时执行。b:[a]:3表示:b任务依赖a任务,并且b任务的运行时长是3分钟。此外,由于计算资源有限,任务在执行的时候室友并发限制的,即最大可同时执行的任务数量有限制。比如当最多只能同时跑2个任务时,由于资源不足的任务,只能等前面的任务跑完才能跑。注:如果有同时可以跑的任务,先按先来后到,然后字母序优先处理。
例如b:[a]:3/2表示b任务依赖a任务,且b任务运行耗时3分钟。最大并发数为2。考题:给你一个基因测序流程以及最大并发数量,请给出运行此流程的总时间。
输入描述
用分号分隔的多个依赖关系的描述,及用斜杠分隔的并发数。
输出描述
总运行时间
示例1
输入
b:[a]:2;c:[a]:3;a:[]:1/1
输出
6
示例2
输入
h:[e,f,g]:2;e:[b]:6;f:[c]:6;g:[d]:6;b:[a]:5;c:[a]:5;d:[a]:5;a:[]:3/2
输出
22
说明
自己先取数输入中的空格等不可见字符(仅为防止意外,用例本身是不会带空格的)。任务名不会超过64字符,任务数不超过100。每个任务数是原子的,启动后不能终止直到完成。
问题三
下面是一个9宫格,在任意一个格子上,可以选择向上、下、左、右移动一步,或者原地不动。红色的线表示相邻2个数之间有障碍物,箭头方向表示不能沿着指示的方向移动;红色的圆圈表示不能再该数字上原地不动。例如1和2之间的障碍,表示不能由1向右移动一步到2;7和8之间的障碍表示2个方向都不能移动;数字4上的圆圈表示只能在数字4上选择向上、下、左、右移动,不能原地不动。给定一个正整数N,你可以选择从任意一个格子出发,使得经过N步移动(包含原地不动,并且有可能无法完整移动N步)后得到的路径上的点连起来的数最大。例如N等于1,沿着路径8->9,得到最大的数是89;给定N等于2,沿着路径8->8->9得到最大的数是889。
输入描述:
第一行一个数字M(M >= 0)表示障碍物总数(包括圆圈),随后M行,每一行右两个正整数P和Q,用空格分开,表示从P不能移动到Q(P等于Q时,表示不能原地不动)。
紧随其后的最后一行是给定的一个正整数N表示移动的步数N。输入保证连起来得到的最大数小于2^64。
输出描述
输出一行得到的最大数
示例
输入
8
1 2
4 4
7 8
8 5
8 7
9 6
9 8
9 9
2
输出
889