多益網路筆試題

2021-06-28 05:01:50 字數 2032 閱讀 1437

一、有20張上下表面光滑的撲克牌,其中有8張向上,要求你閉著眼睛且不借助任何工具把這20張撲克牌分成兩堆,使得每堆向上的撲克牌的數目一樣多

答案:首先,把撲克牌隨機分成兩堆,一堆12張,一堆8張,假設12張的裡面有x張朝上的,那麼8張的裡面就有8-x張朝上的,x張朝下的,此時,把8張撲克牌全部反面,那麼朝上的也變成了x張。

二、有一串瑪瑙項鍊,項鍊上面有n個瑪瑙珠子,這些瑪瑙有m (m < = 9) 種不同的顏色,購買的時候可以只選擇購買項鍊長度為k(k<=n)的一段。現在有個苦逼的找不到工作的程式設計師想花最少的錢買到顏色最多的一段項鍊。要求時間複雜度o(n),空間複雜度o(1)。

答案:看到這道題,第一時間想不到o(n)的思路不要慌,先來看看最裸的思路應該怎麼寫?列舉每乙個買項鍊的位置,然後模擬一遍統計有多少個不同的珠子,**是這樣的:

for (int i=0;i0)

num++;

ans=max(ans,num);

}

現在這樣做,複雜度是o(n*k)的,當k等於n的時候,複雜度就退化成了o(n*n)。所以要考慮如何降低一維複雜度,題目要求複雜度是o(n),因此,裡面的k這個複雜度是有可能被降下來的。來考慮下面乙個例子:

1 1 2 3 4

假設k=4,那麼[1,4]這個區間裡面,vis陣列的值是:2 1 1 0,而[2,5]這個區間裡面,vis陣列的值是[1,1,1,1],這個是怎麼得到的呢?在[1,4]的vis的基礎上,vis[1]--,vis[4]++,只進行了兩次操作,就可以得到[2,5]區間的vis情況。所以,我們可以在一開始加入k個珠子進來,然後,每次,把最先進來的那個珠子x踢出去,此時vis[x]--,然後,再把下乙個珠子y加進來,此時vis[y]++,僅僅兩次操作,就可以得到下乙個位置的值了。**寫起來也更方便:

for (int i=0;i
如此一來,時間複雜度從o(n*k)降低到了o(n),空間複雜度是o(10)=o(1)

三、輸入乙個整型陣列,陣列裡有正數也有負數。

陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。

求所有子陣列的和的最大值。要求時間複雜度為o(n)。

答案:典型的最大子段和問題,是動態規劃or貪心的入門題目。在這裡給一種貪心的做法:

從左到右不停的加,一旦當前的和小於0,就把之前的所有元素都拋棄掉。**非常簡單:

int sum=0;

for (int i=0;i

四、假設:生男生女的概率都是50% (實際情況是生男的概率稍大一些,暫不考慮)

如果:政策允許生下乙個孩子,如果是男孩就不能再生,發現是女孩,可以還繼續

生,直到生下來乙個男孩不准再生了。

那麼:以後的生男生女的比例會偏離50%嗎?偏向哪邊?偏多少?說明理由

答案:做這種題目,千萬不要被題面所迷惑,要堅信男女比例是不會因此而改變的!如果非要計算,也可以拿單個家庭作為研究物件來進行期望值的計算,可以發現其實這還是乙個等比數列,最後生男生女的期望值都是相等的,都是1個,也就是說,在這種策略下平均每家要了兩個孩子,一男一女。

計算方法如下:

生乙個孩子就不生的概率是0.5,生兩個孩子就不生的概率是0.5*0.5,所以,

生孩子個數的期望值是:

1*0.5+2*0.5*0.5+3*0.5*0.5*0.5+……=2

生男孩的期望值是:

1*0.5+1*0.5*0.5+1*0.5*0.5*0.5+……=1

或者也可以寫**去做個實驗:

#include #include #include using namespace std;

int n[2];

int main()

} cout<

五、袋子足夠大,袋子裡面有三種顏色的球。數量都是一樣的,摸出來的概率是一樣的。小明隨便摸出來兩個,然後看了一眼說至少有乙個是紅的。問,小明摸出來兩個紅球的概率是多少??

答案:兩個紅色的組合數有一種,一紅一其他的組合數有2+2=4種。

因此,兩個紅球的概率=1/(1+4)=5種

多益網路筆試題

include include includeusing namespace std 多益網路筆試程式設計題 夢幻數 輸入乙個數字n 將其按各個位上的數反覆展開 用平方和代替這個n 直到最後結果為1時 則為夢幻數 例如輸入 19 展開 1 2 9 2 82 8 2 2 2 68 6 2 8 2 10...

多益網路2020筆試題

題型 選擇題,填空題,問答題,一道程式設計題。sql 優先輸出字段,其餘的照常輸出 忘記了字段是num,主要是乙個範圍,還是varchar。暫時 按varchar處理 select from table order by case when 字段 條件 then 1 else 0 end selec...

多益網路2014暑期實習筆試題

考試要求 先寫程式設計思路,然後再用你所熟悉的一種程式語言寫出 效率越高越好,不寫出程式設計思路的得0分。1 整形陣列a n 陣列元素是1 n的數字,有些數字出現了多次,有些數字沒有出現過,寫 出你的程式設計思路和 效率越高越好,並分析你程式的時間複雜度和空間複雜度。比如 a 4 則1,3,4出現的...