华为od机试
华为机试三题全部用例都通过是不是就是满分呀?刚做完机试,三题全部AC,分享下题目。
第一题:输入两个有序数组的大小和值,再输入一个整数k;要求从两个数组中选择k对元素,使得k对元素之和最小,输出最小的和。分别从两数组中选择一个元素组合在一起即为一对元素;两个元素在两数组中的索引均相同视为同一对元素。
例子:输入 2 1 1; 2 1 2;2;输出为4;第一行表示数组1的size和两个元素;第二行同理;k=2;输出为4,两个数组的第一个元素相加为第一对元素(1+1=2),数组1的第二个元素与数组2的第一个元素组成第二对元素(1+1=2);所以输出为(2+2=4)。
第二题:已知一个数组,包含正整数和负整数,从数组中任选两个元素,使得他们之和的绝对值最小,并输出最小值。
第三题:建立广播:
输入一个n*n的数组,数组内元素只能为0和1,m[i][j]=1,表示站台i和j可以通信,=0则不能通信。m[i][i]=1表示自己可以和自己通信。求至少需要建立几个广播可以使所有站台之间实现通信。
例子:1 0 0;0 1 0;0 0 1;答案:3
例子:1 1;1 1;答案:1
感觉第一题最难,卡了半小时没做出来,通过20%,差点吓坏我,以为最简单的题都做不出来,赶紧跳过了,结果发现后面两道题比较简单,做完2、3题还有一个半小时。于是认真研究了一下第一题,成功AC。