筆試題彙總

2021-07-16 21:21:51 字數 2163 閱讀 7846

對於t(n) = a*t(n/b)+c*n^k;t(1) = c 這樣的遞迴關係,有這樣的結論:

if (a > b^k)   t(n) = o(n^(logb(a)));logb(a)b為底a的對數

if (a = b^k)   t(n) = o(n^k*logn);

if (a < b^k)   t(n) = o(n^k);

a=25; b = 5 ; k=2

a==b^k 故t(n)=o(n^k*logn)=o(n^2*logn)

t(n) = 25t(n/5)+n^2

= 25(25t(n/25)+n^2/25)+n^2

= 625t(n/25)+n^2+n^2 = 625t(n/25) + 2n^2

= 25^2 * t( n/ ( 5^2 ) ) + 2 * n*n

= 625(25t(n/125)+n^2/625) + 2n^2

= 625*25*t(n/125) + 3n^2

= 25^3 * t( n/ ( 5^3 ) ) + 3 * n*n

= ....

= 25 ^ x * t( n / 5^x ) + x * n^2

t(n) = 25t(n/5)+n^2

t(0) = 25t(0) + n^2 ==> t(0) = 0

t(1) = 25t(0)+n^2 ==> t(1) = 1

x = lg 5 n

25 ^ x * t( n / 5^x ) + x * n^2

= n^2 * 1 + lg 5 n * n^2

= n^2*(lgn)

2:n個頂點,m條邊的全連通圖,至少去掉幾條邊才能構成一棵樹?

答:n個頂點的樹一定有n-1條邊(證明可以看任何一本圖論書),所以需要去掉m-(n-1)=m-n+1條邊

3:找到單向鍊錶中間那個元素,如果有兩個則取前面乙個。

這個我只想到兩個直觀的方法,可能有更好地方法。

第一種:

對鍊錶掃瞄一次,得出鍊錶長度,則得出中間位置。第二次掃瞄即可找到中間元素。

第二種:

採用兩個指標的方法。乙個指標步長為2,兩乙個指標步長為1。則步長為2的指標走到鏈尾時,步長為1的指標即指向中間元素。

4:n個整數,求其中任意n-1個數的乘積中的最大的乙個。

答:該問題等價於:從 n 個整數中剔除乙個,使餘下的數乘積最大。

第一種解法:

以空間換時間,計算(n-1)個元素的最大乘積,假定第 i 個元素排除在外,(0<= i <= n-1),那麼

p[i] = s[i-1] * t[i+1],

p[i] 表示出去第 i 個元素後的乘積,s[i-1]表示第i個元素前面所有元素的乘積,t[i+1]表示第i個元素後面所有元素的乘積,這樣,我們需要從前往後遍歷一次陣列得到陣列s, 從後往前遍歷一次陣列得到陣列t, 於是在乙個線性時間內就可得到p, 遍歷一次p陣列就可得到子陣列的最大乘積,時間複雜度為o(n).

第二種解法:

令這n個數依次為 a1,a2,...,an,p=a1*a2*...*an,

(1) 如果 p<0,則剔除其中最大的負整數即可;

(2) 如果 p=0,

2.1 若這 n 個數中有且僅有乙個為「0」。若其它數之積為正,則剔除「0」;否則剔除任意乙個非零數;

2.2 若這 n 個數中至少有兩個為「0」,則隨便剔除乙個均可;

(3)如果 p>0,如果有正數, 則剔除其中最小的正整數即可;否則,剔除最小的負數;

空間複雜度和時間複雜度都為o(n)

5:6.s市a, b共有兩個區,人口比例為3:5,據歷史統計a區的犯罪率為0.01%,b區為0.015%,現在有一起新案件發生在s市,那麼案件發生在a區的可能性有多大?

a. 37.5%           b. 32.2%         c. 28.6%               d. 26.1%

題中犯罪率應該是指犯罪人數與總人數的比例,a和b區的人數比為3:5,那麼a和b的犯罪人數比為(3*0.01%):(5*0.015%)。

新案件發生在a區的可能性應當為a區犯罪人數除以a和b區犯罪人數的總和。

即(3*0.01%)/((3*0.01%)+(5*0.015%))=0.2857=28.6% c

微軟筆試題 彙總

1.臨界變數critical section的概念 還有semaphore,thread類似的這些 程序進入臨界區的排程原則是 如果有若干程序要求進入空閒的臨界區,一次僅允許乙個程序進入。任何時候,處於臨界區內的程序不可多於乙個。如已有程序進入自己的臨界區,則其它所有試圖進入臨界區的程序必須等待。進...

python筆試題彙總

1 什麼是lambda函式?它有什麼好處?lambda作為乙個表示式,定義了乙個匿名函式。lambda和普通的函式相比,就是省去了函式名稱而已,同時這樣的匿名函式,又不能共享在別的地方呼叫。2 介紹一下except的用法和作用 try except語句用來檢測try語句塊中的錯誤,從而讓except...

c 筆試題彙總 2

1.以下三條輸出語句分別輸出什麼?char str1 abc char str2 abc const char str3 abc const char str4 abc const char str5 abc const char str6 abc cout str1 str2 cout cout ...