一、單項選擇
解析
1.選A,ls列出目錄,cd是定位目錄,cp是復制問卷,all只有作為命令的參數使用
2.選B,
00101010 | |
---|---|
+ | 00010110 |
01000000 |
3.選A,遞歸函數的參數和局部變量存儲在系統棧,如果層數過多,棧就會溢出。
解析
4.選C,排序穩不穩定看相等值得元素排序后得相對位置有沒有變化,因此元素之間得比較只要是相鄰的,排序就是穩定的,而堆排序元素的比較跨度很大。
5.選C
- a1與a2比,消耗比較次數1次,不妨令a1>=a2
- 剩下的2n-2個數,兩兩比較,消耗次數n-1次,產生n-1個更大的數,n-1個更小的數
- a1與剩下的n-1個更大的數依次比較,消耗次數n-1次
- a2與剩下的n-1個更小的數依次比較,消耗次數n-1次
- 總的消耗次數\(S=1+(n-1)+(n-1)+(n-1)=3n-2\)
6.選C
初始哈希表如下:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|
\(h[0]=0,h[1]=1,h[2]=4,h[3]=9,h[4]=5,h[5]=3\),哈希表如下:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|
\(h[6]==3——>h[6]=4-->h[6]=5-->h[6]==6\),哈希表如下:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|
\(h[7]=5-->h[7]=6-->h[7]=7\)
7.選C
不考慮題目限制的不連通狀態,e=36,則至少需要的點數n滿足完全圖,\(e=\frac {n(n-1)}{2}-->n=9\),因為題目要求不連通狀態,所以再加一個孤立的點。
解析
8.選B
令二叉樹的高度位h,題意求最少的高度,要滿足趨於滿二叉樹的狀態;滿二叉樹的情況下其結點個數\(n=2^h-1\), 選項A,\(2^{10}-1=1023\),排除,選項B,\(2^{11}-1=2047\),只需最后一層減掉26個節點就可以滿足.
9.選D
如果樹上某個結點A存在左子樹B和右子樹C,那么在前序遍歷的順序是A-B-C,中序遍歷則是B-A-C,顯然,把B去掉兩個序列相同。
10.選A
類似冒泡排序求逆序對,存在7個逆序對
解析
11.選A
\(solve(23,23)\) <-- \(5*solve(22,23)\bmod n\) <-- \(5^{2}*solve(21,23)\bmod n\) <-- ... \(5^{22}*solve(1,23) \bmod n\)
根據費馬小定理:
\(a^p \bmod p=a \bmod p\) (p為質數)
\(a^{p-1} \bmod p=1 \bmod p=1\) (p為質數)
\(5^{22} \bmod 23=1 \bmod 23=1\)
12.選C
\(T(n)=T(n−1)+T(n−2)\) ,所以復雜度是 \(O(Fn)\) 。
或者說是 \(2^n\) ,因為每一項都是 \(Fn=Fn−1+Fn−2\) 。
13.選C
- 挑1個:\(C_8^1=8\)
- 挑2個:\(C_7^2=21\)(插空法,拿掉兩個蘋果剩余7個空位)
- 挑3個:\(C_6^3=20\)(插空法)
- 挑4個:\(C_5^4=5\)(插空法)
- 挑5個:不滿足條件
\(ans=8+21+20+5=54\)
14.選C
滿足三角形的條件是任意兩邊之和大於第三條邊。
根據上面的定理,依次枚舉a=b的情況c可能的個數:
- a b c的個數
- 1 1 1個
- 2 2 3個
- 3 3 5個
- 4 4 7個
- 5 5 9個
- 6 6 9個(a,b,c均為1~9的整數,故最多9個)
- 7 7 9個
- 8 8 9個
- 9 9 9個
\(N=1+3+5+7+9*6=61\)
考慮等腰三角形有以下三種狀態,\(aab,aba,baa\),則\(N=61*3=183\)
再考慮等邊三角形重復計算的情況,\(N=183-9*2=165\)
15.選B
沒有副權,考慮模擬dijkstra算法,可得最短路徑為19,具體過程如下:
二、閱讀程序
解析
首先先看一下程序,通過求 t 可以猜出這是三維坐標系。還有 r 可以大致猜測是球。因為\(cos60=0.5\) ,而60度在弧度制下就是 \(\frac {π}{3}\)。可以猜測一下,因為 \(V=\frac {4}{3}πr^3\) , \(r\)是\(\frac {π}{3}\) ,所以本題和球關系很大,而 d 是半徑。
第16題,正確。第21行,t右邊的表達式計算結果是int,把int賦值給double,不會影響。
第17題,錯誤。如果替換成\(/ 2 /sqrt(t)\),第一步除以2的操作將變成整除,會丟失精度。
第18題,錯誤。通過第10、11行代碼,sq、cu函數的參數是int型,而26~27行的x、y是double型。調用函數的過程中會丟失精度。
第19題,正確,手動模擬,這個不會難算。結果為 \(\frac {5π}{12}\)。
第20題,選D,手動模擬,帶入計算可得
第21題,選C,第24行代碼,出現輸出0的情況,可以判斷是體積交。
解析
本題的任務是采用分治法求最大子段和。一個長度為\(n\)的完整數組的最大子段和有三種可能性,這個子段全部都在\([1,n/2]\)里面、全部都在\([n/2+1,n]\)里面、子段經過了區間的中點。那么前兩種情況可以遞歸求解,對於第三種情況,其實就是[1,n/2]中最大的后綴和再加上[n/2+1,n]中最大的前綴和。
而solve 1函數返回的結構體四個參數描述了函數對應區間的數值特征,分別代表:
-
h此區間最大的前綴和(可以為空)
-
j此區間最大的子段和(可以為空)
-
m此區間最大的后綴和(可以為空)
-
w此區間所有元素的總和。
solve 2函數則直接通過循環計算當前區間“經過中點”的最大的子段和,再與遞歸計算的前兩種方案求最大值,就是當前區間的最大子段和。
第22題,正確。這是兩種不同的算法求最大子段和,所以結果是一樣的。
第23題,錯誤。考慮二分到最邊界,此時 \([n,n+1]\) 會分成 \([n,n]\) 和 \([n+1,n+1]\) ,相等情況被特判走了,所以不會走那兩行特判。但若開頭輸入的 \(n\leq0\) ,也只會分別執行一次。
第24題,錯誤。注意第一個5是表示n個數!剩下的5個數最大字段和是11
第25題,選B。\(T(n)=2T \left( \dfrac{n}{2} \right) + 1\);\(T(n)=2n-1\)
第26題,選C。\(T(n)=2T \left( \dfrac{n}{2} \right) + n\);所以復雜度是\(O(n\log n)\)
第27題,選B。注意第一個數10表示n。剩下的10個數-3 2 10 0 -8 9 -4 -5 9 4的最大子段和是17。