微软2019暑期实习生机试编程题

今天给大家提供了微软2019暑期实习生机试编程题,想去微软的同学可以自己尝试做一下喔。想知道正解的同学,请关注我的公众号“算法岗从零到无穷”,下期我会更新。

问题一: 【玻璃球游戏】

一个队伍中N个人从1到N编号,N个人之间的连线方式如下:编号为K的人和编号为J的人相连(J exactly divides K),玻璃球可以沿线传递;如果编号为P的人有一个玻璃球,有多少种方式可以在至多X步移动中重新回到P?

输入说明:N(人的数目);P(拥有玻璃球的人编号);X(最大移动数目);

输入样例:N=3;P=2;X=4; 样例输出:3; 解释:3种方式;2->1->2 2->1->3->1->2 2->1->2->1->2

问题二:【弓箭手】

一行有N个壶,每个壶都有个特定的编号,弓箭手用以下方式击中壶:一次射击种,弓箭手可以移开1个或1个以上的壶,使壶的编号形成一个回文;剩下的壶可以被转移以使所有的壶又一次位于一行,射击手可以再次进行射击。现在假设每次射击得一分,找到最小的得分。

输入说明:input1:壶的数目N;input2:数组表示壶对应的数字编号;

输入样例:input1:2;input2:{1,2}; 样例输出:2;

解释:此处射击手无法选择任何壶的回文子字符串,他无法射击一个以上的壶,并且他需要分开射击,因此2次射击得分为2;

输入样例:input1:5;input2:{1,4,3,1,5}; 样例输出:3;

解释:此处射击手先射击第三个壶,然后序列变为{1,4,1,5},因为壶被移动;然后他一次射击前三个壶因为前三个壶形成一个回文,因此这个序列剩下{5},最后射击5,因此射击三次得分为3。

问题三:【排队】

电影剧院的购票中心,编号为1到N的N个人站在一个队伍中,因此队列中的第一个人编号为1。接下来会发生以下几类事情:

E1:站在队列前的人拿到票然后离开;

E2:编号为X的人感到愤怒离开队伍;

提问:

E3:编号为X的人处于什么位置?

输入说明:input1:N,站在队伍中的人; input2:Q,提问的数量; input3:含有Q个元素的数组,每个元素包含:如果E=1,事件E1发生; 如果E=2,E2发生; 如果E=3,找到X位置;

输出说明:应该返回查询的位置;

输入样例:input1:5; input2:3; input3:{{1,0},{3,3},{2,2}}; 输出2;

解释:第一个人被移出队列,编号为3的人现处于第二个位置;编号为2的人移出这个队伍;因此2是答案。

问题四:【蜂窝】

蜜蜂收集很多花的蜂蜜,并且将其运送到蜂巢然后在特定时间范围内返回家。任务是在规定时间内尽可能多的收集蜂蜜并且运送到蜂巢中。每朵花有一个单元的蜂蜜,每次只能运送一个单元的蜂蜜。并且,覆盖一个单元的距离需要一个单元的时间,距离采用欧式距离格式计算。找到你能收集的蜂蜜的最大单元。

输入说明:input1:花的数目;input2:蜂巢的数目; input3:花对应的坐标; input4:蜂巢对应的坐标; input5: 出发点坐标;

输入样例: input1:2; input2:2; input3:{{3,3},{4,6}}; input4:{{5,5},{6,1}}; input5:{1,4}; input6:13;

输出样例:2

解释:首先到达{3,3}的花需要距离sqrt(5),然后去蜂窝{5,5}需要距离sqrt(8),然后去{4,6}的花朵,去蜂窝{5,5},最后返回{1,4}总共需要距离sqrt(5)+sqrt(8)+sqrt(2)+sqrt(2)+sqrt(17)=12.0160

关注我,更多外企机试题告诉你
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值