考試時長2個半小時,筆試題分爲三個部分:
1. 20道邏輯選擇題(包括圖形找規律、數字找規律、小學奧數)
2. 40道基礎選擇題(包括計算機網絡、C++補全代碼/查看輸入輸出、python、機器學習)
3. 2道編程(編程可以使用本地IDE,不做跳出限制)
這三部分每一部分作答完畢後,必須提交纔可進入下一部分,提交後不能再進行修改。
第一次筆試經驗不足,有很多需要注意的問題:
1.在筆試過程中突然跳出廣告彈窗,生氣,被統計一次切出頁面次數。因此電腦上的廣告彈窗應該想辦法都清理掉。
2.由於賽碼網筆試時並不會顯示攝像頭拍到了你哪裏,然後我看題的時候離電腦屏幕有點太近了可能導致我的腦袋過大攝像頭識別不了,窒息了,又被統計一次。
3.由於是手機給電腦開的熱點,中途來了電話直接導致掉線。
4.重新連網之後發現選擇題不能點全部考題看到哪道題做了哪道題沒做,傻了吧唧的在那兒從第一題跳到最後一題反覆跳轉跳到最後才提交。還是多刷新幾次就好了。
5.自從我掉線重連後,賽碼網上攝像頭不停顯示異常,但chrome右上角顯示此網頁正在調用攝像頭,我設置的就是允許調用,也不知道到底是什麼原因。
6.做題的時候還是有點被倒計時影響到,有點緊張就靜不下心來了。編程的時候特別傻,沒把題看完。
這次筆試過後需要複習和強化的一些知識點:
1.C++補全代碼題對於引用、實例化順序等知識點的複習
2.算法複習,包括KMP算法、最小生成樹、最短路徑、機器學習知識
編程題:
題目1:
有一段DNA,包含兩種字符,A和T,科學家可以通過兩種方式修改這種DNA,第一種是替換DNA上兩個核酸的位置。第二種是直接把字符修改爲另一種字符。
輸入兩行,第一行是原始的DNA,第二行是目標DNA,保證長度是相同的。
求最少的修改次數。
樣例輸入:
ATTTAA
TTAATT
輸出:3
思路:
.....其實編程題最好是思路想好然後動手寫代碼(如果時間來得及的話)。(以下所有的代碼如有不對請輕拍)
思路1:交換操作是成雙成對的,而替換操作是形單影隻的。先分別統計原始字符串和目標字符串中A和T的個數。需要替換的字符串的個數爲Nsub=abs(A1-A2)或者Nsub=abs(T1-T2)。統計原始字符串和目標字符串中字符不同的個數記爲Ndiff。(Ndiff-Nsub)/2爲需要交換的次數。替換加交換即爲總次數。
python題解:
def minChange(ori, tar):
numA=0
numA2=0
Ndiff=0
for i in range(len(ori)):
if ori[i]=='A': #統計出原始字符爲A的個數
numA=numA+1
if tar[i]=='A': #統計出目標字符爲A的個數
numA2=numA2+1
if ori[i]!=tar[i]: #統計出字符不同的個數
Ndiff=Ndiff+1
Nsub=abs(numA2-numA)
return Nsub+(Ndiff-Nsub)/2
ori = raw_input()
target = raw_input()
print(minChange(ori, target))
思路2:原始字符和目標字符不同則需要進行修改,原始字符是A而目標字符是T,原始字符是T而目標字符是A。在這些不同的字符之間進行替換或者交換,因此分別統計原始字符爲A且與目標字符不同的個數Na,原始字符是T且與目標字符不同的個數Nt。先進行交換操作,則Na-1,Nt-1。因爲交換操作肯定是成雙成對的,如果Na或者Nt減少到了0,那麼交換次數統計完畢。剩餘的只能進行替換操作。這樣,總的來說,需要進行修改的次數實際上就是Na和Nt中較大的那個數。
python題解:可參考August的CSDN博客 https://blog.csdn.net/m0_38065572/article/details/105082562
題目2:
有一個抽獎箱,n張中獎券,m張不中獎券,A和B輪流抽獎,如果抽中獎券就結束,抽到中獎票的人勝利。抽過的獎票會被扔掉。並且額外地,B每次抽獎後會再次抽取一張票並扔掉,就算這張票中了也不算他勝利。如果所有的獎票都抽光了也沒人抽中,則B獲勝。現在A先抽,求A獲勝的概率,保留4位小數
輸入: n和m輸出A獲勝的概率
樣例輸入:
2 3
輸出 0.6000
思路:
思路1:博主又挖坑了,待填中