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