1. 程式人生 > >NOIP 2011初賽普及組C/C++答案詳解

NOIP 2011初賽普及組C/C++答案詳解

一、單項選擇題

1 B

  1 1 0 0 1 1 0

- 1 0 1 1 0 0 1

------------------------

= 0 0 0 1 1 0 1

2 B
48 + 9 = 57

3 C
8G = 8 * 1024 M
8 * 1024 / 2 = 4096張
注意,題目說的是“大約”,不要求精確。

4 C
摩爾定律是由英特爾(Intel)創始人之一戈登·摩爾(Gordon Moore)提出來的。其內容為:當價格不變時,積體電路上可容納的元器件的數目,約每隔18-24個月便會增加一倍,效能也將提升一倍。換言之,每一美元所能買到的電腦效能,將每隔18-24個月翻一倍以上。這一定律揭示了資訊科技進步的速度。

1965年4月19日,《電子學》雜誌(Electronics Magazine)第114頁發表了摩爾(時任快捷半導體公司工程師)撰寫的文章〈讓積體電路填滿更多的元件〉,文中預言半導體晶片上整合的電晶體和電阻數量將每年增加一倍。

1975年,摩爾在IEEE國際電子元件大會上提交了一篇論文,根據當時的實際情況對摩爾定律進行了修正,把“每年增加一倍”改為“每兩年增加一倍”,而普遍流行的說法是“每18個月增加一倍”。但1997年9月,摩爾在接受一次採訪時宣告,他從來沒有說過“每18個月增加一倍”,而且SEMATECH路線圖跟隨24個月的週期。

5 B
每對頂點之間都恰巧有一條邊:
對於兩個頂點來說,邊數C(2, 2) = 1;
對於三個頂點來說,邊數C(3, 2) = 3;
對於四個頂點來說,邊數C(4, 2) = 6;
對於七個頂點來說,邊數C(7, 2) = 21。

6 D
CPU 包括運算邏輯部件、暫存器部件和控制部件等

(1)運算邏輯部件
  英文 Logic components;運算邏輯部件,也叫運算器。可以執行定點或浮點算術運算操作、移位操作以及邏輯操作,也可執行地址運算和轉換。

(2)暫存器
  暫存器部件,包括暫存器、專用暫存器和控制暫存器。 通用暫存器又可分定點數和浮點數兩類,它們用來儲存指令執行過程中臨時存放的暫存器運算元和中間(或最終)的操作結果。 通用暫存器是中央處理器的重要部件之一。

(3)控制部件
  英文 Control unit ;控制部件,主要是負責對指令譯碼,並且發出為完成每條指令所要執行的各個操作的控制訊號。

其結構有兩種:一種是以微儲存為核心的微程式控制方式;一種是以邏輯硬佈線結構為主的控制方式。

微儲存中保持微碼,每一個微碼對應於一個最基本的微操作,又稱微指令;各條指令是由不同序列的微碼組成,這種微碼序列構成微程式。中央處理器在對指令譯碼以後,即發出一定時序的控制訊號,按給定序列的順序以微週期為節拍執行由這些微碼確定的若干個微操作,即可完成某條指令的執行。

簡單指令是由( 3 ~ 5 )個微操作組成,複雜指令則要由幾十個微操作甚至幾百個微操作組成。

7 B
完全二叉樹的深度最小。
一層可以容納1個節點;1 = 21 - 1
兩層可以容納3個節點;3 = 22 - 1
三層可以容納7個節點;7 = 23 - 1
十層可以容納1023個節點;1023 = 210 - 1
十一層可以容納2047個節點;2047 = 211 - 1

8 B
先比較後插入,是插入排序。具體可參考《大話資料結構》9.5節。

9 C
三位二進位制數,可以寫成一位八進位制數。
四位二進位制數,可以寫成一位十六進位制數。
例1:二進位制的10100001 = 十六進位制的a1 = 十進位制的161
例2:二進位制的01111000 = 十六進位制的78 = 十進位制的120
例3:二進位制的11111111 = 十六進位制的ff = 十進位制的255

10 C
將回收站清空後,肉眼看不見檔案了。但是對於作業系統來說,只是將這件檔案佔用的硬碟空間標記為“刪除”,並且讓肉眼不可見而已。

只有等這塊硬碟空間被別的檔案佔用時,原先的檔案才被新資料所覆蓋,此時原先的檔案才無法再恢復。

11 B
深度優先遍歷,不需要額外的資料結構,遞迴即可。

廣度優先遍歷,需要使用佇列做輔助。每個隊首元素出隊時,需要把下一層的頂點入隊。入隊或出隊的順序,即是遍歷的順序。

具體可參考:https://www.jianshu.com/p/ded75497a056

12 A
時間複雜度指的是執行次數,空間複雜度指的是佔用記憶體大小。

13 C
雙向連結串列只是查詢前驅節點方便而已。假如連結串列長度為n,待查詢的節點在連結串列的尾部,和單向連結串列一樣要查n次才能查到。

14 C
ATM自動取款機密碼跟生物特徵沒有關係。

15 C
哈夫曼編碼,也叫赫夫曼編碼。

哈夫曼編碼的方法是將權重最小的兩個結點構成一棵樹,樹的根結點的權重即為這兩個結點之和。如此類推。

1-15.png

如上圖所示,最小的節點是“也”,權重值200,第二小的節點是“者”,權重值300,所以先將這兩個節點構造成一棵樹,根結點為N1,權重值為200 + 300 = 500。

構造出節點N1後,忽略掉“也”和“者”兩個節點。在N1,“乎”和“之”三個節點中,最小的節點是N1,權重值為500,第二小的節點為“乎”,權重值為600,將這兩個節點構成一棵二叉樹,根結點為N2,權重值為500 + 600 = 1100。

構造出節點N2後,忽略掉N1和“乎”兩個節點,剩餘N2和“之”兩個節點。將這兩個節點構造成一棵樹,要節點為N3,權重值為700 + 1100 = 1800。

因為已經沒有其他的結點了,所以哈夫曼樹已經構造完成。從N3節點到“也”節點,需要經過三段路徑,即編碼長度是3。

16 D
“完全淘汰”說得太絕對了。在系統級的程式裡還會被少量使用到。

17 A
回溯法(探索與回溯法)是一種選優搜尋法,又稱為試探法,按選優條件向前搜尋,以達到目標。但當探索到某一步時,發現原先選擇並不優或達不到目標,就退回一步重新選擇,這種走不通就退回再走的技術為回溯法,而滿足回溯條件的某個狀態的點稱為“回溯點”。

回溯法與窮舉法有某些聯絡,它們都是基於試探的。窮舉法要將一個解的各個部分全部生成後,才檢查是否滿足條件,若不滿足,則直接放棄該完整解,然後再嘗試另一個可能的完整解,它並沒有沿著一個可能的完整解的各個部分逐步回退生成解的過程。而對於回溯法,一個解的各個部分是逐步生成的,當發現當前生成的某部分不滿足約束條件時,就放棄該步所做的工作,退到上一步進行新的嘗試,而不是放棄整個解重來。

八皇后問題,是回溯演算法的典型案例。具體可參考:

https://www.jianshu.com/p/797b2499b9f4

18 A
諾貝爾有五大獎項:物理、化學、生物與醫療、文學、和平、經濟。

圖靈獎是計算機的最高獎。
艾倫·麥席森·圖靈(Alan Mathison Turing,1912年6月23日-1954年6月7日),英國數學家、邏輯學家,被稱為電腦科學之父,人工智慧之父。

約翰·馮·諾依曼獎章(英語:IEEE John von Neumann Medal)由IEEE成立於於1990年,目的是表揚在電腦科學和技術上具有傑出成就的科學家。該獎項以對電腦科學具有重大貢獻的現代計算機創始人之一約翰·馮·諾伊曼命名。約翰·馮·諾依曼獎的影響力略遜於圖靈獎。

馮·諾伊曼(1903~1957)是一位全才,參加過“曼哈頓計劃”。他在數學上的成就比計算機上的成就要高。
高德納於1995年獲得約翰·馮·諾依曼獎。

高德納獎(Donald E. Knuth Prize), 授予為電腦科學基礎做出傑出貢獻的人,以電腦科學家高德納(Donald E. Knuth)命名。
高德納獎始於1996年,每1.5年頒發一次,包括5000美元獎金。現在獎項由 ACM計算機理論研討會和IEEE電腦科學基礎研討會交替頒發。
高德納(1938-)是演算法和程式設計技術的先驅者,計算機排版系統TEX和METAFONT的發明者,他因這些成就和大量創造性的影響深遠的著作而譽滿全球

華人電腦科學家姚期智(1946-)於1996年獲得高德納獎,2000年獲得圖靈獎。

19 A

1-19.png

1-2之間的a線,可以由1-5之間的b線和5-2之間的線來替代。去掉a線後仍然強連通。
去掉b後,1無法到達5。
去掉c後,4無法到達1。
去掉d後,3無法到達4。

20 C
馮·諾依曼結構也稱普林斯頓結構,是一種將程式指令儲存器和資料儲存器合併在一起的儲存器結構。程式指令儲存地址和資料儲存地址指向同一個儲存器的不同物理位置,因此程式指令和資料的寬度相同,如英特爾公司的8086中央處理器的程式指令和資料都是16位寬。

說到計算機的發展,就不能不提到美國科學家馮·諾依曼。從20世紀初,物理學和電子學科學家們就在爭論製造可以進行數值計算的機器應該採用什麼樣的結構。人們被十進位制這個人類習慣的計數方法所困擾。所以,那時以研製模擬計算機的呼聲更為響亮和有力。20世紀30年代中期,美國科學家馮·諾依曼大膽的提出:拋棄十進位制,採用二進位制作為數字計算機的數制基礎。同時,他還說預先編制計算程式,然後由計算機來按照人們事前制定的計算順序來執行數值計算工作。

人們把馮·諾依曼的這個理論稱為馮·諾依曼體系結構。從EDVAC到當前最先進的計算機都採用的是馮諾依曼體系結構。所以馮·諾依曼是當之無愧的數字計算機之父。

人們把利用這種概念和原理設計的電子計算機系統統稱為“馮.諾曼型結構”計算機。馮.諾曼結構的處理器使用同一個儲存器,經由同一個匯流排傳輸。

二、問題求解

欲購完整答案請加微信307591841,
想了解小朋友學程式設計請加QQ群581357582。
關注公眾號請掃描二維碼
qrcode_for_kidscode_258.jpg