日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

阿里巴巴2013年实习生笔试题A

發(fā)布時(shí)間:2025/3/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里巴巴2013年实习生笔试题A 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

一、單項(xiàng)選擇題

1.下列說法不正確的是:(B)

  A.SATA硬盤的速度速度大約為500Mbps/s

  B.讀取18XDVD光盤數(shù)據(jù)的速度為1Gbps

  C.前兆以太網(wǎng)的數(shù)據(jù)讀取速度為1Gpbs

  D.讀取DDR3內(nèi)存數(shù)據(jù)的速度為100Gbps

解析:有說B的,有說D的,B肯定是不對(duì)的吧。

  關(guān)于B選項(xiàng):

  理論上講:DVD的1倍速是1350KB/s,CD是150KB/s,DVD的1倍速等于CD的9倍速。

  因?yàn)镃D容量是700MB左右,DVD單面單層(DVD-5)是4.7GB(實(shí)際為4.37GB),DVD單面單層的容量是CD的6.4倍左右,所以,1倍速的播放器在80分鐘內(nèi)把一張700MB的CD讀取出來(700MB*1024/150KB/s/60=79.6min),1倍速的播放器在60分鐘內(nèi)把一張4.7GB的DVD讀出來(4.37GB*1024*1024、1350KB/s/60=56.6min)

  DVD的倍速:

  1x:(1倍速)基本傳輸速率為1350KB/s。

  2x:(2倍速)基本傳輸速率為2700KB/s。

  4x:(4倍速)基本傳輸速率為5400KB/s。

  18x:(18倍速)基本傳輸速率為24300KB/s=23M。

  CD的倍速:

  1x(1倍速)基本傳輸速率為150KB/s。

  2x(2倍速)基本傳輸速率為300KB/s

  4x(4倍速)基本傳輸速率為600KB/s。

  8x(8倍速)基本傳輸速率為1200KB/s。

?

2.(D)不能用于Linux中的進(jìn)程通信

  A.共享內(nèi)存

  B.命名管道

  C.信號(hào)量

  D.臨界區(qū)(每個(gè)進(jìn)程訪問臨界資源的那段代碼稱為臨界區(qū);臨界資源就是每次只允許一個(gè)進(jìn)程訪問的共享資源)

解析:

  Linux進(jìn)程間通信的幾種主要手段簡介:

  (1)管道及有名管道:管道可用于具有親緣關(guān)系的進(jìn)程間通信;有名管道克服了管道沒有名字的限制,因此,除了具有管道所具有的功能外,它還允許無親緣關(guān)系進(jìn)程間通信;

  (2)信號(hào):信號(hào)是比較復(fù)雜的通信方式,用于通知接收有某種事件發(fā)生,除了用于進(jìn)程間通信外,進(jìn)程還可以發(fā)送信號(hào)給進(jìn)程本身;linux除了支持Unix早期信號(hào)語義函數(shù)signal外,還支持語義符合Posix標(biāo)準(zhǔn)的信號(hào)函數(shù)sigaction(實(shí)際上,該函數(shù)是基于BSD的,BSD為了實(shí)現(xiàn)可靠信號(hào)機(jī)制,又能夠統(tǒng)一對(duì)外接口,用sigaction函數(shù)重新實(shí)現(xiàn)了signal函數(shù));

  (3)消息隊(duì)列:消息隊(duì)列是消息的鏈接表,包括Posix消息隊(duì)列和system?V消息隊(duì)列。有足夠權(quán)限的進(jìn)程可以向隊(duì)列中添加消息,被賦予讀權(quán)限的進(jìn)程則可以讀走隊(duì)列中的消息。消息隊(duì)列客服了信號(hào)承載信息量少,管道只能承載無格式字節(jié)流以及緩沖區(qū)大小受限等缺點(diǎn);

  (4)共享內(nèi)存:使得多個(gè)進(jìn)程可以訪問同一塊內(nèi)存空間,是最快的可用IPC形式。是針對(duì)其他通信機(jī)制運(yùn)行效率較低而設(shè)計(jì)的。往往與其他通信機(jī)制,如信息量結(jié)合使用,來達(dá)到進(jìn)程間的同步及互斥;

  (5)信息量:主要作為進(jìn)程間以及同一進(jìn)程不同線程之間的同步手段;

  (6)套接口:更為一般的進(jìn)程間通信機(jī)制,可用于不同機(jī)器之間的進(jìn)程間通信。

  Linux線程間通信幾種主要通信手段簡介:

  (1)鎖機(jī)制:包括互斥鎖、條件變量、讀寫鎖,互斥鎖提供了以排他方式防止數(shù)據(jù)結(jié)構(gòu)被并發(fā)修改的方法,使用條件變量可以以原子的方式阻塞線程,直到某個(gè)特定條件為真為止。對(duì)條件的測試是在互斥鎖的保護(hù)下進(jìn)行的,條件變量始終與互斥鎖一起使用。讀寫鎖運(yùn)行多個(gè)線程同時(shí)讀共享數(shù)據(jù),而對(duì)寫操作是互斥的;

  (2)信號(hào)量機(jī)制:包括無名線程信號(hào)量和命名線程信號(hào)量;

  (3)信號(hào)機(jī)制:類似于進(jìn)程間的信號(hào)處理;

  進(jìn)程與線程的區(qū)別:

  進(jìn)程概念:

  進(jìn)程是表示資源分配的基本單位,又是調(diào)度運(yùn)行的基本單位。例如,用戶運(yùn)行自己的程序,系統(tǒng)就創(chuàng)建一個(gè)進(jìn)程,并為它分配資源。然后,把該進(jìn)程放入進(jìn)程的就緒隊(duì)列。進(jìn)程調(diào)度程序選中它,為它分配CPU以及其他有關(guān)子亞U年,該進(jìn)程才真正運(yùn)行。所以,進(jìn)程是系統(tǒng)中并發(fā)執(zhí)行的單位。

  線程的概念:

  線程是進(jìn)程中執(zhí)行運(yùn)算的最小單位,亦即執(zhí)行處理機(jī)調(diào)度的基本單位。如果把進(jìn)程理解為在邏輯上操作系統(tǒng)所完成的任務(wù),那么線程表示完成該任務(wù)的許多子任務(wù)之一。線程可以在處理器上獨(dú)立調(diào)度執(zhí)行,這樣,在多處理器環(huán)境下就允許幾個(gè)線程各自在單獨(dú)處理器上進(jìn)行。

  引入線程的好處:

  (1)易于調(diào)度。?

  (2)提高并發(fā)性。通過線程可方便有效地實(shí)現(xiàn)并發(fā)性。進(jìn)程可創(chuàng)建多個(gè)線程來執(zhí)行同一程序的不同部分。?

  (3)開銷少。創(chuàng)建線程比創(chuàng)建進(jìn)程要快,所需開銷很少。

  (4)利于充分發(fā)揮多處理器的功能。通過創(chuàng)建多線程進(jìn)程(即一個(gè)進(jìn)程可具有兩個(gè)或更多個(gè)線程),每個(gè)線程在一個(gè)處理器上運(yùn)行,從而實(shí)現(xiàn)應(yīng)用程序的并發(fā)性,使每個(gè)處理器都得到充分運(yùn)行。?

  進(jìn)程和線程的關(guān)系:?

  (1)一個(gè)線程只能屬于一個(gè)進(jìn)程,而一個(gè)進(jìn)程可以有多個(gè)線程,但至少有一個(gè)線程。?

  (2)資源分配給進(jìn)程,同一進(jìn)程的所有線程共享該進(jìn)程的所有資源。?

  (3)處理機(jī)分給線程,即真正在處理機(jī)上運(yùn)行的是線程。?

  (4)線程在執(zhí)行過程中,需要協(xié)作同步。不同進(jìn)程的線程間要利用消息通信的辦法實(shí)現(xiàn)同步。

?

3.設(shè)在內(nèi)存中有P1,P2,P3三道程序,并按照P1,P2,P3的優(yōu)先級(jí)次序運(yùn)行,其中內(nèi)部計(jì)算和IO操作時(shí)間由下表給出(CPU計(jì)算和IO資源都只能同時(shí)由一個(gè)程序占用):

P1:計(jì)算60ms---》IO?80ms---》計(jì)算20ms

P2:計(jì)算120ms---》IO?40ms---》計(jì)算40ms

P3:計(jì)算40ms---》IO?80ms---》計(jì)算40ms

完成三道程序比單道運(yùn)行節(jié)省的時(shí)間是(C)

  A.80ms     B.120ms     C.160ms     D.200ms

解析:

  單道運(yùn)行的總時(shí)間為:60+80+20+120+40+40+40+80+40=520ms

?

4.兩個(gè)等價(jià)線程并發(fā)的執(zhí)行下列程序,a為全局變量,初始為0,假設(shè)printf、++、--操作都是原子性的,則輸出不肯哪個(gè)是(A)

1 void foo() { 2 3 if(a <= 0) { 4 5 a++; 6 7 } 8 9 else { 10 11 a--; 12 13 } 14 15 printf("%d", a); 16 17 }

  A.01     B.10     C.12     D.22

解析:

  對(duì)于B選項(xiàng):P1執(zhí)行程序,輸入1,P2執(zhí)行程序,輸出0;

  對(duì)于C選項(xiàng):初始為0,P1執(zhí)行完判斷語句,決定要執(zhí)行a++,中斷,P2進(jìn)行判斷,此時(shí)a仍然等于0,執(zhí)行判斷語句,并執(zhí)行輸入,得到1,P1然后繼續(xù)執(zhí)行,此時(shí)它該執(zhí)行a++,這時(shí)a=1,執(zhí)行并輸出,結(jié)果為2;

  對(duì)于D答案:初始為0,P1執(zhí)行完判斷語句,決定要執(zhí)行a++,中斷,P2進(jìn)行判斷,此時(shí)a仍然等于0,執(zhí)行a++,得到a=1,中斷,P1繼續(xù)執(zhí)行a++,a=2,P1輸出,得到2,P1結(jié)束,P2繼續(xù)執(zhí)行輸出語句,得到2;

?

5.給定fun函數(shù)如下,那么fun(10)的輸出結(jié)果是(C)

int?fun(int?x)?

{

????return?(x==1)???1?:?(x?+?fun(x-1));

}

  A.0     B.10     C.55     D.3628800

?

6.在c++程序中,如果一個(gè)整型變量頻繁使用,最好將他定義為(D)

  A.auto     B.extern     C.static     D.register

解析:

  C語言提供了四種類型修飾符:auto、register、extern、static。

  auto修飾僅在語句塊內(nèi)使用,初始化可為任何表達(dá)式,其特定是當(dāng)執(zhí)行流程進(jìn)入該語句塊的時(shí)候執(zhí)行初始化操作,沒有默認(rèn)值;

  使用register修飾符修飾變量,將暗示編譯程序相應(yīng)的變量被頻繁地使用,如果可能的話,應(yīng)將其保存到CPU的寄存器,以加快其存儲(chǔ)速度;

  static靜態(tài)變量聲明符。在聲明它的語句塊、子程序塊或函數(shù)內(nèi)部有效,值保持,在整個(gè)程序期間分配存儲(chǔ)器空間,編譯器默認(rèn)值為0,。是C/C++中很常用的修飾符,它被用來控制變量的存儲(chǔ)方式和可見性。Static被引入以告知編譯器,將變量存儲(chǔ)在程序的靜態(tài)存儲(chǔ)區(qū)而非棧上空間。

  extern可以置于變量或者函數(shù)前,以表示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量或函數(shù)時(shí),在其他模塊中尋找其定義。另外,extern也可用來進(jìn)行鏈接指定。

?

7.長為n的字符串中匹配長度為m的子串的復(fù)雜度為(B)

  A.O(N)     B.O(M+N)     C.O(N+LOGM)     D.O(M+LOGN)

解析:有選B的,也有選C的。

  這道題目首先想到的是KMP算法,時(shí)間復(fù)雜度為O(m+n)。但是還有的選擇C選項(xiàng),貌似是Sunday算法。

?

8.判斷一包含n個(gè)整數(shù)a[]中是否存在i、j、k滿足a[i]?+?a[j]?=?a[k]的時(shí)間復(fù)雜度為(B)

  A.O(n)????B.O(n^2)?????C.O(nlog(n))????D.O(n^2log(n))

解析:

  對(duì)于B選項(xiàng),可以這樣實(shí)現(xiàn)。

  (1)先對(duì)數(shù)組進(jìn)行排序,時(shí)間為O(nlogn),然后從大往小取a[k],n次

  然后在0到k-1之間夾出i,j來...每次K操作...若存在負(fù)數(shù),則需要在0到n-1之間夾出i,j;

  (2)先對(duì)數(shù)組進(jìn)行排序,時(shí)間為O(nlogn),然后兩次for循環(huán)嵌套,進(jìn)行hash查找;

  對(duì)于D選項(xiàng),可以這樣實(shí)現(xiàn)。

  (1)先對(duì)數(shù)組進(jìn)行排序,時(shí)間為O(nlogn),然后兩個(gè)for循環(huán)嵌套,二分查找a[i]+a[j]是否在數(shù)組中;

  

9.三次射擊能中一次的概率是0.95,請問一次射擊能中的概率是多少?(C)
  A.0.32     B.0.5     C.0.63     D.0.85

解析:

  公式很簡單,1-(1-p)^3=0.95。接下來需要有一定的估算技巧。A選項(xiàng)可以看作1/3,C選項(xiàng)可以看作2/3,D選項(xiàng)可以看作4/5.

?

10.下列序排算法中最壞復(fù)雜度不是n(n-1)/2的是(D)

  A.快速序排?????B.冒泡序排???C.直接插入序排???D.堆序排

解析:

  各種排序算法的時(shí)間復(fù)雜度:

  插入排序思想

  將n個(gè)元素的數(shù)列分為已有序和無序兩個(gè)部分,每次處理就是講無序數(shù)列中的第一個(gè)元素與有序數(shù)列的元素從后往前逐個(gè)進(jìn)行比較,找到插入位置,將該元素插入到有序數(shù)列的合適位置。

  希爾排序思想

  希爾排序,也稱為遞減增量排序算法,是插入排序的一種高速而穩(wěn)定的改進(jìn)版本。

  希爾排序是基于插入排序的以下兩點(diǎn)性質(zhì)而提出改進(jìn)方法的:

  (1)插入排序在對(duì)幾乎已經(jīng)排好序的數(shù)據(jù)操作時(shí),效率高,即可達(dá)到線性排序的效率;

  (2)但插入排序一般來說是低效的,因?yàn)椴迦肱判蛎看沃荒軐?shù)據(jù)移動(dòng)一位;

?  選擇排序思想

  首先在未排序的序列中找到最大(小)元素,存放到排序序列的起始位置,然后再從剩余未排序元素中繼續(xù)尋找最大(小)元素,然后放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

?

二、不定向選擇題

1.以下哪些進(jìn)程狀態(tài)轉(zhuǎn)換是正確的(ABCE)

  A.就緒到運(yùn)行????B.運(yùn)行到就緒????C.運(yùn)行到阻塞????D.阻塞到運(yùn)行????E.阻塞到就緒

解析:

  進(jìn)程調(diào)度:

  四種進(jìn)程間的狀態(tài)轉(zhuǎn)換:

  

?  就緒—>執(zhí)行 執(zhí)行—>阻塞 阻塞—>就緒? 執(zhí)行—>就緒

  1)進(jìn)程的三種基本狀態(tài)

?????進(jìn)程在運(yùn)行中不斷地改變其運(yùn)行狀態(tài)。通常,一個(gè)進(jìn)程必須具有以下三種基本狀態(tài):

  就緒狀態(tài):

  當(dāng)進(jìn)程已分配到除CPU以外的所有必要的資源,只要獲得處理機(jī)便可立即執(zhí)行,這時(shí)的進(jìn)程狀態(tài)就稱為就緒狀態(tài);

  執(zhí)行狀態(tài):

  當(dāng)進(jìn)程已獲得處理機(jī),其程序正在處理機(jī)上執(zhí)行,此時(shí)的進(jìn)程狀態(tài)稱為執(zhí)行狀態(tài);

  阻塞狀態(tài):

  正在執(zhí)行的進(jìn)程,由于等待某個(gè)事件發(fā)生而無法執(zhí)行時(shí),便放棄處理機(jī)而進(jìn)入阻塞狀態(tài)。引起進(jìn)程阻塞的事件有很多種,例如,等待I/O完成、申請緩沖區(qū)不能滿足、等待信號(hào)等。

  2)進(jìn)程三種狀態(tài)間的轉(zhuǎn)換

  一個(gè)進(jìn)程在運(yùn)行期間,不斷地從一種狀態(tài)轉(zhuǎn)換到另一種狀態(tài),它可以多次處于就緒狀態(tài)和執(zhí)行狀態(tài),也可以多次處于阻塞狀態(tài)。

  A.?就緒—>執(zhí)行

  處于就緒狀態(tài)的進(jìn)程,當(dāng)進(jìn)程調(diào)度程序?yàn)橹峙浜昧颂幚頇C(jī)后,該進(jìn)程便由就緒狀態(tài)轉(zhuǎn)換為執(zhí)行狀態(tài);

  B.?執(zhí)行—>就緒

  處于執(zhí)行狀態(tài)的進(jìn)程在其執(zhí)行過程中,因分配給它的一個(gè)時(shí)間片已經(jīng)用完而不得不讓出處理機(jī),于是進(jìn)程從執(zhí)行狀態(tài)轉(zhuǎn)換為就緒狀態(tài);

  C.?執(zhí)行—>阻塞

  正在執(zhí)行的進(jìn)程因等待某種事件發(fā)生而無法繼續(xù)執(zhí)行時(shí),便從執(zhí)行狀態(tài)變成阻塞狀態(tài);

  D.?阻塞—>就緒

  處于阻塞狀態(tài)的進(jìn)程,若其等待的事件已經(jīng)發(fā)生,于是進(jìn)程便從阻塞狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài)。

?

4.A和B晚上無聊就開始數(shù)星星。每次只能數(shù)K個(gè)(20<=k<=30)A和B輪流數(shù)。最后誰把星星數(shù)完誰就獲勝,那么當(dāng)星星數(shù)量為多少時(shí)候A必勝?()

  A、2013???B、2888???C、4062??D、***????E、****

解析:不懂

  對(duì)于上述答案,A有必勝的策略,A、B、C、D、E都應(yīng)該選擇。首先,A選取,使剩余的星星為50的倍數(shù)。然后數(shù)星星的順序?yàn)锽、A、B、A......。B數(shù)k個(gè)星星,則A就數(shù)50-k個(gè),使剩余星星始終剩余為50的倍數(shù),最后,一定是A數(shù)最后的星星。A必勝。

?

三、填空問答題

1.給你一個(gè)整型數(shù)組A[N],完成一個(gè)小程序代碼(20行之內(nèi)),使得A[N]逆向,即原數(shù)組為1,2,3,4,逆向之后為4,3,2,1。

?

?3.有個(gè)苦逼的上班族,他每天忘記定鬧鐘的概率為0.2,上班堵車的概率為0.5,如果他既沒定鬧鐘上班又堵車那他遲到的概率為1.0,如果他定了鬧鐘但是上班堵車那他遲到的概率為0.9,如果他沒定鬧鐘但是上班不堵車他遲到的概率為0.8,如果他既定了鬧鐘上班又不堵車那他遲到的概率為0.0,那么求出他在60天里上班遲到的期望。

解析:概率為0.54    (說明:先前此處寫的是0.51,若帶來誤導(dǎo),這里對(duì)各位說聲抱歉,對(duì)不起)

?

4.戰(zhàn)報(bào)交流:戰(zhàn)場上不同的位置有N個(gè)戰(zhàn)士(n>4),每個(gè)戰(zhàn)士知道當(dāng)前的一些戰(zhàn)況,現(xiàn)在需要這n個(gè)戰(zhàn)士通過通話交流,互相傳達(dá)自己知道的戰(zhàn)況信息,每次通話,可以讓通話的雙方知道對(duì)方的所有情報(bào),設(shè)計(jì)算法,使用最少的通話次數(shù),是的戰(zhàn)場上的n個(gè)士兵知道所有的戰(zhàn)況信息,不需要寫程序代碼,得出最少的通話次數(shù)。

解析:

  筆試的時(shí)候是這樣想的:N-1個(gè)人圍成一個(gè)環(huán),將知道的消息都告訴第N個(gè)人,需要N-1次,同時(shí)第N-1個(gè)人與第N個(gè)人交流時(shí),兩人互相交流消息,這樣子第N-1個(gè)人與第N個(gè)人都知道了所有人的信息,接下來第N-1人沿著環(huán)將消息傳遞下去,需要N-2次,所以需要N-1+(N-2)=2N-3。

  但是實(shí)際上這個(gè)問題有著更優(yōu)的解法。

  擴(kuò)展的一類問題:

  題目:假如我們班有n個(gè)MM,每一個(gè)MM都有一個(gè)獨(dú)家的八卦消息。兩個(gè)MM可以通過電話聯(lián)系,一通電話將使得雙方都獲知對(duì)方目前已經(jīng)知道的全部消息。要想所有n個(gè)MM都知道所有n條八卦消息,最少需要多少通電話?請給出通話方案。

  來自:http://www.matrix67.com/blog/archives/1078

解答:

  (1)分析情況

  當(dāng)n很小時(shí)我們很容易通過枚舉的方法找出最佳通話方案:

  A1=0 A2=1 A3=3 A4=4 A5=6 A6=8

  (2)基于中間消息傳遞人的思想建模

  可以先把所有消息集中于一個(gè)或幾個(gè)人,然后再由這些消息匯總?cè)税严鹘o所有人。設(shè)n個(gè)MM中有m個(gè)消息匯總?cè)?#xff0c;她們共享所有消息需要打An通電話。

  通話方案如下:

  第一、剩下的n-m個(gè)MM每個(gè)人從m個(gè)消息匯總?cè)酥须S機(jī)選擇一個(gè)通話。這樣一來m個(gè)消息匯總?cè)司驼莆账?/span>n條八卦消息,并且她們每個(gè)人所掌握的消息互不重疊,是互補(bǔ)的;

  第二、m個(gè)消息匯總?cè)送ㄟ^打電話共享所有八卦消息;

  第三、作為消息匯總?cè)说?span style="font-family:Arial;">m個(gè)MM再通過電話將自己新得到八卦新聞告知最開始打電話給自己的MM,使得她們也掌握所有n條消息;

  模型如下:

?  

?

  (3)模型分析

  按照上面的通話方案,第一步需要n-m通電話,第二步需要Am通電話,第三步需要n-m通電話,故有An=2*n-m+Am,進(jìn)一步化簡得

  An=2*n?-?2*m?-?Am

  即當(dāng)MM的個(gè)數(shù)為n時(shí),共享所有八卦消息共需要2*n?-?2*m?-?Am)通電話。若要使得通話次數(shù)最小,就要求(2*m?-?Am)最大。因此,取多少個(gè)MM作為消息匯總?cè)耸沟?#xff08;2*m?-?Am)最大成為了解決這個(gè)問題的關(guān)鍵,它反映了MM們之間通話的效率。記Em=2*m?-?Am)。

  當(dāng)有一個(gè)消息匯總?cè)思?span style="font-family:Arial;">m=1時(shí),E1=2*1?-?A1=2

  當(dāng)有兩個(gè)消息匯總?cè)思?span style="font-family:Arial;">m=2時(shí),E2=2*2?-?A2=3

??????????  m=3時(shí),E3=2*3?-?A3=3

??????????????m=4時(shí),E4=2*4?-?A4=4

??????????????m=5時(shí),E5=2*5?-?A5=4

??????????????m=6時(shí),E6=2*6?-?A6=4

????????????????????????.......

  由歸納法可知,當(dāng)m>=4時(shí),Em有最大值4An有最小值2*n?-?4,即當(dāng)有大于或等于4個(gè)消息匯總?cè)藭r(shí)可通過上述通話方案使得n個(gè)MM通過最小的電話數(shù)共享所有八卦消息。此時(shí)共需要2*n?-?4次電話。

  (4)模型證明

????? http://blog.csdn.net/linygood/article/details/8898844

  (5)模型結(jié)果

?  

  題目中如果告訴n大于4,那么結(jié)果就是2n-4

?

5.有N個(gè)人,其中一個(gè)明星和n-1個(gè)群眾,群眾都認(rèn)識(shí)明星,明星不認(rèn)識(shí)任何群眾,群眾和群眾之間的認(rèn)識(shí)關(guān)系不知道,現(xiàn)在如果你是機(jī)器人R2T2,你每次問一個(gè)人是否認(rèn)識(shí)另外一個(gè)人的代價(jià)為O(1),試設(shè)計(jì)一種算法找出明星,并給出時(shí)間復(fù)雜度(沒有復(fù)雜度不得分)。

解答:

  這個(gè)問題等價(jià)于找未知序列數(shù)中的最小數(shù),我們將reg這個(gè)函數(shù)等價(jià)為以下過程:如果i認(rèn)識(shí)j,記作i大于等于j,同樣j不一定大于等于i,滿足要求,i不認(rèn)識(shí)j記作i<j,對(duì)明星k,他不認(rèn)識(shí)所有人,則k是其中最小的數(shù),且滿足其余的人都認(rèn)識(shí)他,也就是其余的人都大于等于k.這樣問題就被轉(zhuǎn)換了。就拿N=5來說,首先有數(shù)組S[5]={A,B,C,D,E}這5個(gè)變量,里邊存放著隨機(jī)數(shù),求是否存在唯一最小數(shù),如果存在位置在S中的哪里。(樓主這里是這個(gè)意思,按我的理解題中這個(gè)最小數(shù)一定是存在且唯一的)。

?  

?

  另外一種思路:

?  

?

四、綜合題

有一個(gè)淘寶商戶,在某城市有n個(gè)倉庫,每個(gè)倉庫的儲(chǔ)貨量不同,現(xiàn)在要通過貨物運(yùn)輸,將每次倉庫的儲(chǔ)貨量變成一致的,n個(gè)倉庫之間的運(yùn)輸線路圍城一個(gè)圈,即1->2->3->4->...->n->1->...,貨物只能通過連接的倉庫運(yùn)輸,設(shè)計(jì)最小的運(yùn)送成本(運(yùn)貨量*路程)達(dá)到淘寶商戶的要求,并寫出代碼。

解答:

  這個(gè)題目類似的題目有:

  題目:http://www.lydsy.com/JudgeOnline/problem.php?id=1045
  有n個(gè)小朋友坐成一圈,每人有ai個(gè)糖果。每人只能給左右兩人傳遞糖果。每人每次傳遞一個(gè)糖果代價(jià)為1,求使所有人獲得均等糖果的最小代價(jià)。
分析:
  假設(shè)a1分給an的糖果數(shù)為k,則可以得到以下的信息:
??????    a1???????a2??????????a3      an-1?     an
  當(dāng)前數(shù)目:a1-k??????a2       ?a3     ??an-1?     an+k
  所需代價(jià):|a1-k-ave|?|a1+a2-k-2*ave|?|a1+a2+a3-k-3*ave||a1+..+a(n-1)-k-(n-1)*ave|???|k|
  以sum[i]表示從a1加到ai減掉i*ave的和值,這以上可以化簡為
  總代價(jià)?=?|s1-k|+|s2-k|+...+|s(n-1)-k|+|k|
  不難看出:當(dāng)k為s1...s(n-1)中的中位數(shù)的時(shí)候,所需的代價(jià)最小

?  

?

?


?

?

  轉(zhuǎn)載請注明:http://www.cnblogs.com/iloveyouforever/??

轉(zhuǎn)載于:https://www.cnblogs.com/iloveyouforever/p/3430106.html

總結(jié)

以上是生活随笔為你收集整理的阿里巴巴2013年实习生笔试题A的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。