問(wèn):軟件設(shè)計(jì)師算題怎么解決?
答:軟件設(shè)計(jì)師下午科目《應(yīng)用技術(shù)》中第四題為算法題,主要考察的是常用數(shù)據(jù)結(jié)構(gòu)和算法的掌握情況,考察形式主要為C語(yǔ)言代碼填空、采用了什么設(shè)計(jì)策略、時(shí)間,空間復(fù)雜度,算法穩(wěn)定性分析、輸出結(jié)果是什么等。算法題應(yīng)該是《應(yīng)用技術(shù)》中最難的一道了,需要考生熟悉一些常用的算法和C語(yǔ)言的語(yǔ)法。
針對(duì)算法題,沒(méi)有特別好的辦法能讓考生快速了解,需要考生在平時(shí)學(xué)習(xí)與備考時(shí)就要熟悉各類(lèi)常見(jiàn)算法,像是最短裝配時(shí)間算法、B樹(shù)、貪心算法、動(dòng)態(tài)規(guī)劃、回溯法、背包問(wèn)題、最短路徑、拓?fù)渑判?、堆排序等。除了熟悉算法,更重要的就是不斷的做題練習(xí)。
相關(guān)推薦:軟件設(shè)計(jì)師歷年考試分值分布情況詳解
練習(xí)題:
閱讀下列說(shuō)明和C代碼,回答問(wèn)題1和問(wèn)題2,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。
[說(shuō)明]
凸多邊形是指多邊形的任意兩點(diǎn)的連線(xiàn)均落在多邊形的邊界或者內(nèi)部。相鄰的點(diǎn)連線(xiàn)落在多邊形邊上,稱(chēng)為邊,不相鄰的點(diǎn)連線(xiàn)落在多邊形內(nèi)部。稱(chēng)為弦。假設(shè)任意兩點(diǎn)連線(xiàn)上均有權(quán)重,凸多邊形最優(yōu)三幫劑分問(wèn)題定義為:求將凸多邊形劃分為不相交的三角形集合,且各三角形權(quán)重之和最小的剖分方案。每個(gè)三角形的權(quán)重為三條邊權(quán)重之和。
假設(shè)N個(gè)點(diǎn)的凸多邊形點(diǎn)編號(hào)為V1,V2,……,VN,若在VK處將原凸多邊形劃分為一個(gè)三角形V1VkVN,兩個(gè)子多邊形V1,V2,…,Vk和Vk,Vk+1,…VN,得到一個(gè)最優(yōu)的剖分方案,則該最優(yōu)剖分方案應(yīng)該包含這兩個(gè)子凸邊形的最優(yōu)剖分方案。用m[i][j]表示帶你Vi-1,Vi,…Vj構(gòu)成的凸多邊形的最優(yōu)剖分方案的權(quán)重,S[i][j]記錄剖分該凸多邊形的k值。
則
其中:
Wj,i-1分別為該三角形三條邊的權(quán)重。求解凸多邊形的最優(yōu)剖分方案,即求解最小剖分的權(quán)重及對(duì)應(yīng)的三角形集。
[C代碼]
#include
#define N 6
//凸多邊形規(guī)模
int m[N+1] [N+1]; //m[i][j]表示多邊形Vi-1到Vj最優(yōu)三角剖分的權(quán)值
int S[N+1] [N+1]; //S[i][j]記錄多邊形Vi-1 到Vj最優(yōu)三角剖分的k值
int W[N+1] [N+1]; //凸多邊形的權(quán)重矩陣,在main函數(shù)中輸入
/*三角形的權(quán)重a,b,c,三角形的頂點(diǎn)下標(biāo)*/
int get_ triangle_weight(int a,int b,int c){
return W[a][b]+W[b][c]+W[c][a];
}
/*求解最優(yōu)值*/
void triangle_partition(){
int i,r,k,j;
int temp;
/*初始化*/
for(i=1;i<=N;i++){
m[i][i]=0;
}
/*自底向上計(jì)算m,S*/
for(r=2;(1);r++){/*r為子問(wèn)題規(guī)模*/ //r<=N
for(i=1;k<=N-r+1;i++){
(2); //int j=i+r-1
m[i][j]= m[i][j]+m[i+1][j]+get_triangle_weight(i-1,i,j); /*k=j*/
S[i][j]=i;
for(k=j+1;k
temp=m[i][k]+m[k+1][j]+ge_triangle_ weight(i-1,k,j);
if((3)){/*判斷是否最小值*/ //temp
m[i][j]=temp;
S[i][j]=k;
}
}
}
}
}
/*輸出剖分的三角形i,j:凸多邊形的起始點(diǎn)下標(biāo)*/
void print_triangle(int i,int j){
if(i==j) return;
print_triangle(i,S[i][j]);
print_
triangle((4)); //s[i][j]+1,j
print(“V%d- -V%d-
-V%d\n“,i-1,S[i][j],j);
}
[問(wèn)題1] (8分)
根據(jù)說(shuō)明和C代碼,填充C代碼中的空(1) ~ (4)。
[問(wèn)題2] (7分)
根據(jù)說(shuō)明和C代碼,該算法采用的設(shè)計(jì)策略為(5),算法的時(shí)間復(fù)雜度為(6),空間復(fù)雜度為(7) (用0表示)。
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,信管網(wǎng)網(wǎng)站提供的以上信息僅供參考,如有異議,請(qǐng)以權(quán)威部門(mén)公布的內(nèi)容為準(zhǔn)!
信管網(wǎng)致力于為廣大信管從業(yè)人員、愛(ài)好者、大學(xué)生提供專(zhuān)業(yè)、高質(zhì)量的課程和服務(wù),解決其考試證書(shū)、技能提升和就業(yè)的需求。
信管網(wǎng)軟考課程由信管網(wǎng)依托10年專(zhuān)業(yè)軟考教研傾力打造,官方教材參編作者和資深講師坐鎮(zhèn),通過(guò)深研歷年考試出題規(guī)律與考試大綱,深挖核心知識(shí)與高頻考點(diǎn),為學(xué)員考試保駕護(hù)航。面授、直播&錄播,多種班型靈活學(xué)習(xí),滿(mǎn)足不同學(xué)員考證需求,降低課程學(xué)習(xí)難度,使學(xué)習(xí)效果事半功倍。
發(fā)表評(píng)論 查看完整評(píng)論 | |