軟件設計師案例分析當天每日一練試題地址:www.njjt123.com/exam/ExamDayAL.aspx?t1=4
往期軟件設計師每日一練試題匯總:www.njjt123.com/class/27/e4_1.html
軟件設計師案例分析每日一練試題(2022/2/1)在線測試:www.njjt123.com/exam/ExamDayAL.aspx?t1=4&day=2022/2/1
點擊查看:更多軟件設計師習題與指導
軟件設計師案例分析每日一練試題內(nèi)容(2022/2/1)
閱讀下列說明和C代碼,回答問題 1 至問題 3,將解答寫在答題紙的對應欄內(nèi)。
【說明】
假幣問題:有n枚硬幣,其中有一枚是假幣,己知假幣的重量較輕。現(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
int getCounterfeitCoin(int coins[], int first,int last)
{
int firstSum = 0,lastSum = 0;
int ì;
If(first==last-1){ /*只剩兩枚硬幣*/
if(coins[first]< coins[last])
return first;
return last;
}
if((last - first + 1) % 2 ==0){ /*偶數(shù)枚硬幣*/
for(i = first;i<( 1 );i++){
firstSum+= coins[i];
}
for(i=first + (last-first) / 2 + 1;i< last +1;i++){
lastSum += coins[i];
}
if( 2 ){
Return getCounterfeitCoin(coins,first,first+(last-first)/2;)
}else{
Return getCounterfeitCoin(coins,first+(last-first)/2+1,last;)
}
}
else{ /*奇數(shù)枚硬幣*/
For(i=first;i<="" p="">
firstSum+=coins[i];
}
For(i=first+(last-first)/2+1;i
lastSum+=coins[i];
}
If(firstSum
return getCounterfeitCoin(coins,first,first+(last-first)/2-1);
}else if(firstSum>lastSum){
return getCounterfeitCoin(coins,first+(last-first)/2-1,last);
}else{
Return( 3 )
}
}
}
【問題一】
根據(jù)題干說明,填充C代碼中的空(1)-(3)
【問題二】
根據(jù)題干說明和C代碼,算法采用了( )設計策略。
函數(shù)getCounterfeitCoin的時間復雜度為( )(用O表示)。
【問題三】
若輸入的硬幣數(shù)為30,則最少的比較次數(shù)為( ),最多的比較次數(shù)為( )。
信管網(wǎng)試題答案與解析:www.njjt123.com/st/3842215171.html
信管網(wǎng)考友試題答案分享:
信管網(wǎng)suhx:
【問題1】:
(1):first+(first+last)/2 +1,(2):firstsum<lastsum,(3):first+(last-first)/2,
【問題2】:
分治算法,o(1)
【問題3】:
最少比較次數(shù)為:2,最多比較次數(shù):4
信管網(wǎng)jac_luoziqiang:
1 (1) (last-first)/2 + 1 (2)firstsum<lastsum (3)(last-first)/2
2 分治法 nlogn
3 最少 2次 最多 4次
信管網(wǎng)試題答案與解析:
www.njjt123.com/st/3842215171.html