問題一:如何快速找出乙個32位整數的二進位制表達裡有多少個」1」?用關於」1」的個數的線性時間?
答案:錯誤答案是
while(x)//當x為負數,那麼這就是乙個無限迴圈。
正確解答是:
while(x)//這裡就是最好的解答,並別x中有多少1就會迴圈幾次,
效率高。
問題二:
用線性時間和常數附加空間將乙個長度為n的字串向左迴圈移動m位(例如,」abcdefg」移動3位就變成了」defgabc」)。
答案:把字串切成長為m和n-m的兩半。將這兩個部分分別逆序,再對整個字串逆序。
分析:這個方案的總共需要交換n次,如果換作另一種思路,m位m位向右移動,最好情況會比這種方法少
移動m位,最壞情況多移動(m-n%m)*m-m次。
#include
#include
using
namespace
std;
void runleftstring(char *ptr,int x)
第三題:
給出一行c語言表示式,判斷給定的整數是否是乙個2的冪。
答案:if(x&(x-1)==0)那麼這個整數就是2的冪。
分析:1,10,1000,10000,100000,1000000,2的冪就是2的n次方,那麼就只能有一位是1,
其他位就必須是0,所以有x&(x-1)==0判斷這個數是不是2的冪。
第四題:
考慮乙個雙人遊戲。遊戲在乙個圓桌上進行。每個遊戲者都有足夠多的硬幣。他們需要在桌子上輪流放置硬幣,
每次必需且只能放置一枚硬幣,要求硬幣完全置於桌面內(不能有一部分懸在桌子外面),並且不能與原來放
過的硬幣重疊。誰沒有地方放置新的硬幣,誰就輸了。遊戲的先行者還是後行者有必勝策略?這種策略是什麼?
答案:先行者在中心放一枚硬幣,以後方的硬幣總是與後行者相對稱的地方,這樣只要後行者有地方放,那麼先
行者必有地方放。策略先行者必勝。
第五題:
如果叫你從下面兩種遊戲中選擇一種,你選擇哪一種?為什麼?
a. 寫下一句話。如果這句話為真,你將獲得10美元;如果這句話為假,你獲得的金錢將少於10美元
或多於10美元(但不能恰好為10美元)。
b. 寫下一句話。不管這句話的真假,你都會得到多於10美元的錢。
答案:選擇第一種遊戲,寫下:「我既不會得到10美元,也不會得到1000000000美元」.
分析:1.假設這句話是真話,a選項中如果這句話為真就獲得10美元,但是我的這句話是我不會得到10美元
矛盾,所以不成立。
2.假設這句話是假話,a選項中如果這句話是假話會獲得不等10美元,滿足我既不會得到10美元這句話,
但是如果想我寫的話是假話,那麼只有第二句話是真話了,於是我將得到1000000000美元。
第六題:
某種藥方要求非常嚴格,你每天需要同時服用a、b兩種藥片各一顆,不能多也不能少。這種藥非常貴,你不
希望有任何一點的浪費。一天,你開啟裝藥片a的藥瓶,倒出一粒藥片放在手心;然後開啟另乙個藥瓶,
但不小心倒出了兩粒藥片。現在,你手心上有一顆藥片a,兩顆藥片b,並且你無法區別哪個是a,哪個是b。
你如何才能嚴格遵循藥方服用藥片,並且不能有任何的浪費?
答案:將手心裡面的藥片每一片從中間分開,分成兩堆,再取一片a藥也分成2份,分別放置兩堆中,每次服用
時只取一堆就ok。
分析:本來是服用1片a與1片b就剛好,可是多了1片b,將原來一堆的藥片都從中間分開分成2堆,於是我們再取
1片a分成2片分別放入兩堆裡面,就可以求出來。
第七題:
乙個圓盤被塗上了黑白二色,兩種顏色各佔乙個半圓。圓盤以乙個未知的速度、按乙個未知的方向旋轉。
你有一種特殊的相機可以讓你即時觀察到圓上的乙個點的顏色。你需要多少個相機才能確定圓盤旋轉的方向?
答案:控制相機繞圓盤中心順時針移動,觀察顏色多久變一次;然後讓相機以相同的速度逆時針繞著圓盤中心移動,
再次觀察變色的頻率。可以斷定,變色頻率較慢的那一次,相機的轉動方向是和圓盤相同的。
第八題:
地球上有多少個點,使得從該點出發向南走一英里,向東走一英里,再向北走一英里之後恰好回到了起點?
答案:傳統答案是在北極點。實際上這個題的答案是無窮多個,距離南極點1+1/(2π)位置,此位置往
南走1英里,則r=1/2π,周長d=2πr=1,剛好等於要往東走的英里,於是又回到1/2π的位置,再往北走1就回到
了原點,依次類推,其實在1+1/(2kπ)(k=1,2,3,4….)的位置都可以回到原點。(pai把我糾結的)
第九題:
一對夫婦邀請n-1對夫婦參加聚會(因此聚會上總共有2n人)。每個人都和所有自己不認識的人握了一次手。
然後,男主人問其餘所有人(共2n-1個人)各自都握了幾次手,得到的答案全部都不一樣。假設每個人都認識自己的配偶,
那麼女主人握了幾次手?
答案:n-1
分析:有2n-1個人,且他們握手次數都不相同,因為不可能跟自己握手,那麼握手的範圍是0-(2n-2),如果第一對夫妻中
的女士握手0次,那麼該對夫妻中的男士可以握手2n-2次,第二對夫妻中的女士要跟第一對夫妻中的男士握手,那麼第二對、
夫妻中的女士握手1次,該對夫妻中的男士握手2n-3次。。。以此類推,直到握過n-2次手的人和握過n次手的人配成一對。
此時,除了男主人及其配偶以外,其餘所有人都已經配對。根據排除法,最後剩下來的那個握手次數為n-1的人就是女主人了。
第十題:
如何選擇4個砝碼可以稱出40g以內的所有質量。
答案:1,3,9,27
分析:首先選擇1g作為開始,這樣我有了乙個1g的砝碼,我可以表示的質量範圍是-1g到1g,我無法表示2g,於是,為了表示2g
的質量,我選擇3g,因為3-1=2,為什麼這樣做?這樣做是為了讓我的可以表示範圍更大一些,有了1,3我們可以表示的範圍
是1到4g,同樣無法表示5g,於是我們再取9g,5=9-4,這樣就可以組合得到5g的表示,從而是取值範圍最大化的呈現,此刻能
表示的大小範圍是1-13,同理,表示到13已經是極限了,無法表示14g,於是我們選擇27,因為27-13=14,剛好表示,此刻可以
表示的範圍是1-40g,就是我們要求的結果。
人物分析第二集
昨天對xx進行了男朋友分析,給xx看了之後,她覺得還比較準確,但是也提出了疑問。這一套邏輯是否符合身邊的所有人呢?那麼好吧,今天我對我和xx的好朋友cc也分析下,她適合的男朋友是什麼樣子的。好吧,一步步來。1.家庭圈 cc父母在醫院做醫生,婦產科和腦外科,獨生子。中產家庭。2.朋友圈 一定的學歷,不...
linux學習第二集(純乾貨)
接下來主要講的還是linux的簡單命令 主要講的是 檔案 cat more cp等命令 linux只有乙個檔案的根目錄就是放在 之下,home 所有的使用者都存放在此目錄之下 etc 存放的是linux的配置檔案 root 超級管理員使用者 bin 下面存放的是命令檔案 cat命令 主要是檢視檔案的...
Micro bit第二集 溫控與風扇
let erage 0 let sum 0 let min 0 let max 0 let line 0 let 轉速 0 let 溫度 0 input.onbuttonpressed button.a,function if 溫度 min erage math.floor sum 5 oled12...