微软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

 


---------------------
原文:https://blog.csdn.net/sinat_22147265/article/details/89005819

posted @ 2019-04-08 20:18 yuanninesuns 阅读(...) 评论(...) 编辑 收藏