微軟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
轉載于:https://www.cnblogs.com/yuanninesuns/p/10673079.html