CSP-S 2019 RP++!算法
衆所周知,NOIP屍體尚熱,亡魂未散,CCF開辦了CSP-S 2019初賽模擬賽。函數
這是我瞎寫的第二份試卷題解,順便複習。(什麼?第一份?好難的!)spa
單選題(1)某計算機的 CPU 和內存之間的地址總線寬度是 32 位(bit),這臺計算機最多可使用( )的內存。.net
A. 2GB B. 4GB C. 8GB D. 16GB設計
[解析] 32位(bit),即$2^{30}$字節(byte)。指針
$1 GB=1024 MB=1024*1024 KB=1024*1024*1024 byte=2^{30} byte$blog
$32 bit=2^{32} byte=2^2*2^{30} byte=4GB$ip
[答案] B內存
單選題(2)下面屬於解釋執行的程序設計語言是( )get
A. C B. C++ C. Pascal D. Python
[解析] 解釋執行語言:Python,JavaScript,C#,PHP,Basic,VBScript……
編譯執行語言:C,C++,Objective-C……
[答案] D
單選題(3)二進制數 00101100 和 01010101 異或的結果是( )
A. 00101000
B. 01111001
C. 01000100
D. 00111000
[解析] 根據二進制異或「相同爲1,不一樣爲0」的規則,進行異或:
$00101100$
$01010101$
得:$01111001$
[答案] B
單選題(4)與二進制小數0.1相等的八進制數是( )
A. 0.8 B. 0.4 C. 0.2 D. 0.1
[解析] 由二進制的特色可知,$(0.1)_2=(0.5)_10=(0.4)_8$。
[答案] B
單選題(5)設某算法的時間複雜度函數的遞推方程是$T(n)=T(n-1)+n$($n$爲正整數)及$T(0)=1$,則該算法的時間複雜度爲( )
A. $O(log n)$ B. $O(n log n)$ C. $O(n)$ D. $O(n^2)$
[解析] 顯然,$T(n)=T(n-1)+n$
$=n+(n-1)+(n-2)+……+1$
因此複雜度爲$O(n^2)$
[答案] D
單選(6)表達式$a*(b+c)-d$的後綴表達形式爲( )
A. abcd*+- B. abc+*d- C. abc*+d- D. -+*abcd
[解析] 關於中綴表達式轉後綴表達式的方法,我讀過不少人的作法,幾乎都須要用到棧,在初賽中這種步驟較爲繁瑣。
這裏有一種不用棧的手算方法,比較簡單,能夠詳見這篇dalao的博文:中綴表達式轉後綴表達式
歸納一下,方法就是:先按運算符優先級對每一個式子加括號,而後將運算符移到它後面的括號後面就好了。
[答案] C
單選(7)一棵二叉樹以下圖所示,若採用二叉樹鏈表存儲該二叉樹(各個結點包括結點的數據、左孩子指針、右孩子指針)。若是沒有左孩子或者右孩子,則對應的爲空指針。那麼該鏈表中空指針的數目爲( )
A. 6 B. 7 C. 12 D. 14
[解析] 這題咱們只須要會數數外加認真做答就能夠答對。圖中有3個點沒有兒子,有1個點只有1個兒子。因此空指針數目:$3*2+1*1=7$。
[答案] B
單選題(8)以比較做爲基本運算,在$N$個數中找最小數的最少運算次數爲( )
A. $N$ B. $N^2$ C. $N-1$ D. $log N$
[解析] 衆所周知,要找$N$個數的最小數,是必須得遍歷一遍這$N$個數的(不然拿異能感應最小數嗎)。
而此題「以比較做爲基本運算」,找最小數只須要比較$N-1$次,由於本身和本身沒必要比較。
[答案] C
單選題(9)在有$n$個子葉節點的哈夫曼樹中,其節點總數爲( )
A. $2^{n-1}$ B. $2n-1$ C. $2n+1$ D. $2n$
[解析] 哈夫曼樹是一種特殊樹形(是二叉樹,至少能夠看得出來,本題出題人但願咱們認爲這是一種二叉樹),這種樹只存在出度爲$0$或$2$的節點。
能夠長這樣,也能夠長成其餘模樣:
很顯然,葉子節點爲$n$,即爲出度爲$0$的節點數爲$n$,根據哈夫曼樹的特性,能夠知道出度爲$1$的節點數爲$n-1$。因此總數爲$2n-1$
[答案] B
單選題(10)G是一個非連通簡單無向圖,共有28條邊,則該圖至少有( )個頂點。
A. 10 B. 9 C. 8 D. 7
[解析] 由於題目要求求最少頂點數,而徹底連通圖頂點最少,因此先假設28條邊構成一個徹底連通圖。
設該徹底連通圖頂點數爲$n$。${n*(n-1)}/{2}=28$,解之得,$n=8$。
又由於這是「非聯通簡單無向圖」,因此再加一個遊離在外的點,則該圖至少有$9$個頂點。
[答案] B
(未完待續……甚至不知道何時能續)