軟件設(shè)計師案例分析當(dāng)天每日一練試題地址:m.xiexiliangjiufa.com/exam/ExamDayAL.aspx?t1=4
往期軟件設(shè)計師每日一練試題匯總:m.xiexiliangjiufa.com/class/27/e4_1.html
軟件設(shè)計師案例分析每日一練試題(2022/9/14)在線測試:m.xiexiliangjiufa.com/exam/ExamDayAL.aspx?t1=4&day=2022/9/14
點擊查看:更多軟件設(shè)計師習(xí)題與指導(dǎo)
軟件設(shè)計師案例分析每日一練試題內(nèi)容(2022/9/14)
閱讀下列說明和C代碼,回答問題1至問題3,將解答寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
n-皇后問題是在n行n列的棋盤上放置n個皇后,使得皇后彼此之間不受攻擊,其規(guī)則是任意兩個皇后不在同一行、同一列和相同的對角線上。
擬采用以下思路解決n-皇后問題:第i個皇后放在第i行。從第一個皇后開始,對每個皇后,從其對應(yīng)行(第i個皇后對應(yīng)第i行)的第一列開始嘗試放置,若可以放置,確定該位置,考慮下一個皇后;若與之前的皇后沖突,則考慮下一列;若超出最后一列,則重新確定上一個皇后的位置。重復(fù)該過程,直到找到所有的放置方案。
【C代碼】
下面是算法的C語言實現(xiàn)。
(1)常量和變量說明
pos:一維數(shù)組,pos[i]表示第i個皇后放置在第i行的具體位置
count:統(tǒng)計放置方案數(shù)
i,j,k:變量
N:皇后數(shù)
(2)C程序
#include
#include
#define N4
/*判斷第k個皇后目前放置位置是否與前面的皇后沖突*/
in isplace(int pos[], int k) {
int i;
for(i=1; i if( (1) || fabs(i-k) ══ fabs(pos[i] - pos[k])) {
return 0;
}
}
return 1;
}
int main() {
int i,j,count=1;
int pos[N+1];
//初始化位置
for(i=1; i<=N; i++) {
pos[i]=0;
}
(2) ;
while(j>=1) {
pos[j]= pos[j]+1;
/*嘗試擺放第i個皇后*/
while(pos[j]<=N&& (3)_) {
pos[j]= pos[j]+1;
}
/*得到一個擺放方案*/
if(pos[j]<=N&&j══ N) {
printf("方案%d: ",count++);
for(i=1; i<=N; i++){
printf("%d ",pos[i]);
}
printf("\n");
}
/*考慮下一個皇后*/
if(pos[j]<=N&& (4) ) {
j=j+1;
} else{ //返回考慮上一個皇后
pos[j]=0;
(5) ;
}
}
return 1;
}
【問題1】(10分)
根據(jù)以上說明和C代碼,填充C代碼中的空(1)~(5)。
【問題2】(2分)
根據(jù)以上說明和C代碼,算法采用了 (6) 設(shè)計策略。
【問題3】(3分)
上述C代碼的輸出為:
(7) 。
信管網(wǎng)試題答案與解析:m.xiexiliangjiufa.com/st/3815415695.html
信管網(wǎng)考友試題答案分享:
信管網(wǎng)試題答案與解析:
m.xiexiliangjiufa.com/st/3815415695.html
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,信管網(wǎng)網(wǎng)站提供的以上信息僅供參考,如有異議,請以權(quán)威部門公布的內(nèi)容為準(zhǔn)!
信管網(wǎng)致力于為廣大信管從業(yè)人員、愛好者、大學(xué)生提供專業(yè)、高質(zhì)量的課程和服務(wù),解決其考試證書、技能提升和就業(yè)的需求。
信管網(wǎng)軟考課程由信管網(wǎng)依托10年專業(yè)軟考教研傾力打造,官方教材參編作者和資深講師坐鎮(zhèn),通過深研歷年考試出題規(guī)律與考試大綱,深挖核心知識與高頻考點,為學(xué)員考試保駕護(hù)航。面授、直播&錄播,多種班型靈活學(xué)習(xí),滿足不同學(xué)員考證需求,降低課程學(xué)習(xí)難度,使學(xué)習(xí)效果事半功倍。