午夜无码中文字幕影院,国产自产第一区c国产,久久久久久夜精品精品免费,国产99久久,夜夜夜夜曰天天天天拍国产,欧美日韩亚洲另类专区,国产精品区一区二区免费

軟題庫 移動APP 掃碼下載APP 隨時隨地移動學習 培訓課程
試卷年份2017年上半年
試題題型【分析簡答題】
試題內容

閱讀下列說明和C代碼,回答問題1至問題3,將解答寫在答題紙的對應欄內。
【說明】假幣問題:有n枚硬幣,其中有一枚是假幣,己知假幣的重量較輕?,F(xiàn)只有一個天平,要求用盡量少的比較次數(shù)找出這枚假幣。
【分析問題】
將n枚硬幣分成相等的兩部分:
(1)當n為偶數(shù)時,將前后兩部分,即1。。。n/2和n/2+1。。。0,放在天平的兩端,較輕的一端里有假幣,繼續(xù)在較輕的這部分硬幣中用同樣的方法找出假幣:
(2)當n為奇數(shù)時,將前后兩部分,即1。。(n-1)/2和(n+1)/2+1。。。0,放在天平的兩端,較輕的一端里有假幣,繼續(xù)在較輕的這部分硬幣中用同樣的方法找出假幣;若兩端重量相等,則中間的硬幣,即第(n+1)/2枚硬幣是假幣。
【C代碼】
下面是算法的C語言實現(xiàn),其中:
coins[]:硬幣數(shù)組
first,last:當前考慮的硬幣數(shù)組中的第一個和最后一個下標
#include
intgetCounterfeitCoin(intcoins[],intfirst,intlast)
{
intfirstSum=0,lastSum=0;
intì;
if(first==last-1){/*只剩兩枚硬幣*/
if(coins[first]returnfirst;
returnlast;
}
if((last-first+1)%2==0)
{
/*偶數(shù)枚硬幣*/
for(i=first;i<(1);i++){
firstSum+=coins[i];
}
for(i=first+(last-first)/2+1;ilastSum+=coins[i];
}
if(2){
ReturngetCounterfeitCoin(coins,first,first+(last-first)/2;)
}
else{
ReturngetCounterfeitCoin(coins,first+(last-first)/2+1,last;)
}
}
else
{
/*奇數(shù)枚硬幣*/
for(i=first;ifirstSum+=coins[i];
}
for(i=first+(last-first)/2+1;ilastSum+=coins[i];
}
if(firstSumreturngetCounterfeitCoin(coins,first,first+(last-first)/2-1);
}
elseif(firstSum>lastSum){
returngetCounterfeitCoin(coins,first+(last-first)/2-1,last);
}
else{
Return(3)
}
}
}
問題
問題:4.1根據(jù)題干說明,填充C代碼中的空(1)-(3)
問題:4.2根據(jù)題干說明和C代碼,算法采用了()設計策略。
函數(shù)getCounterfeitCoin的時間復雜度為()(用O表示)。
問題:4.3若輸入的硬幣數(shù)為30,則最少的比較次數(shù)為(),最多的比較次數(shù)為()。


相關試題

推薦文章