微軟100題(8) 綜合題

2021-07-02 18:47:58 字數 1297 閱讀 2988

1.有兩個房間,一間房裡有三盞燈,另一間房有控制著三盞燈的三個開關,

這兩個房間是 分割開的,從一間裡不能看到另一間的情況。

現在要求受訓者分別進這兩房間一次,然後判斷出這三盞燈分別是由哪個開關控制的。

有什麼辦法呢?

答:進入開關房,開幾分鐘a,關掉a;開b,關著c ,去燈房,亮著是b控制,關著但是摸著有熱度的是a控制,關著無明顯溫度變化c控制

2.你讓一些人為你工作了七天,你要用一根金條作為報酬。金條被分成七小塊,每天給出一塊。

如果你只能將金條切割兩次,你怎樣分給這些工人?

答:切割成1/7 2/7 4/7.只需要切兩次,第一題給1/7;第二天用2/7換1/7;第三天再給1/7;第四天給4/7,換回來1/7和2/7.。。依次類推

3. ★用一種演算法來顛倒乙個鏈結表的順序。現在在不用遞迴式的情況下做一遍。

listnode* reverselist(listnode* head)

return preversehead;

}

4★用一種演算法在乙個迴圈的鏈結表裡插入乙個節點,但不得穿越鏈結表。

鍊錶插入就是兩個指標的變換,此處為迴圈鍊錶,最後乙個結點的指標只向頭結點

5★用一種演算法整理乙個陣列。你為什麼選擇這種方法?

處理陣列,元素確定且在乙個較小的n範圍時候,一般可以採用的處理方法:1.hash;2基數排序(見文章積跬步至千里——基數排序的應用)

6★用一種演算法使通用字串相匹配。

字串操作:標準c的幾個函式,strchr strcmp strcpy strlen等 c++用string很方便,加上迭代器的操作,不能用的話,就自己遍歷處理

7★顛倒乙個字串。優化速度。優化空間。

void reverse(string str)

{ string::reverse_iterator it;

for (it=str.rbegin() ; it != str.rend(); it++)

cout<<*it;

cout<8★假設你有乙個用1001個整數組成的陣列,這些整數是任意排列的,但是你知道所有的整數都在1到1000(包括1000)之間。此外,除乙個數字出現兩次外,其他所有數字只出現一次。假設你只能對這個陣列做一次處理,用一種演算法找出重複的那個數字。如果你在運算中使用了輔助的儲存方式,那麼你能找到不用這種方式的演算法嗎?

hash 會用空間;直接用sum和算太數學;這種情況可以用異或處理;不浪費空間則基數排序,(見文章積跬步至千里——基數排序的應用)

9★不用乘法或加法增加8倍。現在用同樣的方法增加7倍。

左移3位  增加7倍 (n<<3)-n

XDOJ綜合題 檔案排序

類別 綜合 時間限制 1s 記憶體限制 256kb 問題描述 作業系統中在查詢檔案時會按照某個規則對檔案排序,例如下圖為按照檔案修改日期逆序排 序 最後修改的排在最前面 但目前作業系統不支援同時按照多個字段進行排序。現在請你寫乙個程式能夠同時按照修改 日期和檔案大小對檔案進行排序,排序規則為 1.日...

unity之綜合題2總結

嗨,歡迎來到我們的 狗刨網,今天我們講的總結,繼續是迴圈的問題,接下來我們繼續練習吧,所謂孰能生巧呀。1 使用continue計算1 3 5 99 根據題意可知,這是乙個求和的,而且是奇數求和,根據題意可知通式公式是2n 1 因為使用continue所以用到if語句。int i for i 1 i ...

408資料結構綜合題

資料結構綜合應用題 問題 鍵盤輸入n個英文本母,輸入格式為n c1 c2 cn,其中n表示字母的個數。請程式設計以這些輸入資料建立乙個單鏈表,並要求將字母不重複的存入鍊錶 輸入乙個單詞,掃瞄其在鍊錶中是否出現,如果出現,就什麼 都不做 否則,根據這個單詞構造結點插入鍊錶中。答案 void creat...