積累(三)
積累(三)
問:一個房間有3個人,每個人都想知道三個人的年齡之和,但每沒個人都不想讓其他2個人知道自己年齡,問有什麼方法得年齡和?
答:每人在自己的紙條上寫下自己年齡,折起來打亂後打開加和。這樣對任意一個人來講,就無法確定其他兩人與年齡的對應關係了。
現有1000瓶葡萄酒,隻知道其中有一瓶是毒酒,但不知道是哪瓶,喝一點點毒酒,就會致命。不想因此浪費這1000瓶酒。故給出10隻老鼠,10隻杯,一次性找出那瓶酒。
1、編號:
給葡萄酒標上數字:1-1000;給老鼠標上:0-9; 相應給杯標上:0-9; 每隻老鼠配一隻相同編號的杯子。
2、分酒:(根據2進製)
編號為1的葡萄酒分給編號為以下的杯子:0 (2^0 = 1)
編號為2的葡萄酒分給編號為以下的杯子:1 (2^1 = 2)
編號為3的葡萄酒分給編號為以下的杯子:1、0 (2^0 + 2^1 = 3)
。。。。
編號為1000的葡萄酒分給編號為以下的杯子:9、8、7、6、5、2、1、0(2^9 + 2^8 + 2^7 + 2^6 + 2^5 + 2^2 + 2^1 + 2^0 = 1000)
3、試酒:
讓老鼠喝下相同編號的杯子。
4、找毒酒:
找出死掉的老鼠,記下其編號X、Y、Z……。
毒酒應該是編號為:2^X + 2^Y + 2^Z + ……
瓶蓋在桌上擺金字塔。將6層金字塔倒置,最少需挪動多少個瓶蓋?
7個,見下圖。
某班46人,會乒乓球、足球、籃球、羽毛球的人數依次為40、38、35、27。問四項都會的至少幾人?
總人次為40+38+35+27=140。假設每人會三項,此時總人次為46*3=138,多出來140-138=2人。於是答案為2。
Linux內存的延遲分配:就是在你未使用內存(均指物理內存)的時候,操作係統是不會真正的分配物理內存的。比如:
int *p = (int*)malloc(1024 * 1024)
如果接下來你沒有訪問p所指向的內存,那麼你會看到進程占用的內存是不是包括這1M空間的。 因此不能通過檢測malloc的指針是否為NULL,來判定係統能否支持申請的內存大小(即空閑內存大於申請內存)。36個自動賽車,6個賽道,沒有計時器。最少多少次能比出來最快的三輛?(from2015屆騰訊秋招)
答:9次。分析見下。
下麵一段代碼,輸出結果是什麼?

1.在構造過程中,不允許使用除法;
2.滿足O(1)空間複雜度和O(n)的時間複雜度;
3.除遍曆計數器與a[N] b[N]外,不可使用新的變量(包括棧臨時變量、堆空間和全局靜態變量等)。
最後更新:2017-04-03 07:56:58