2023年黑龍江省資料總結要領

2021-12-22 16:57:09 字數 1092 閱讀 7284

1、若第n件物品能放入揹包,則問題變為能否再從n-1件物品中選出若干件放入揹包(這時揹包可放入物品的重量變為s-w[n])。若第n件物品不能放入揹包,則考慮從n-1件物品選若干件放入揹包(這時揹包可放入物品仍為s)。若最終s=0,則有一解;否則,若s<0或雖然s>0但物品數n<1,則無解。

(1)s-w[n],n-1 //knap(s-w[n],n-1)=true

(2)s,n-1knap←knap(s,n-1)

2、給定n個村莊之間的交通圖,若村莊i和j之間有道路,則將頂點i和j用邊連線,邊上的wij表示這條道路的長度,現在要從這n個村莊中選擇乙個村莊建一所醫院,問這所醫院應建在哪個村莊,才能使離醫院最遠的村莊到醫院的路程最短?試設計乙個解答上述問題的演算法,並應用該演算法解答如圖所示的例項。20分

void hospital(adjmatrix w,int n)

//在以鄰接帶權矩陣表示的n個村莊中,求醫院建在何處,使離醫院最遠的村莊到醫院的路徑最短。

//在最長路徑中,取最短的一條。m記最長路徑,k記出發頂點的下標。

printf(「醫院應建在%d村莊,到醫院距離為%d\n」,i,m);

for}//演算法結束

對以上例項模擬的過程略。各行中最大數依次是9,9,6,7,9,9。這幾個最大數中最小者為6,故醫院應建在第三個村莊中,離醫院最遠的村莊到醫院的距離是6。

1、對圖1所示的連通網g,請用prim演算法構造其最小生成樹(每選取一條邊畫乙個圖)。

3、根據二叉排序樹中序遍歷所得結點值為增序的性質,在遍歷中將當前遍歷結點與其前驅結點值比較,即可得出結論,為此設全域性指標變數pre(初值為null)和全域性變數flag,初值為true。若非二叉排序樹,則置flag為false。

#define true 1

#define false 0

typedef struct node

*btree;

void judgebst(btree t,int flag)

// 判斷二叉樹是否是二叉排序樹,本演算法結束後,在呼叫程式中由flag得出結論。

//不是完全二叉樹

judgebst (t->rlink,flag);// 中序遍歷右子樹

}//judgebst演算法結束

2023年黑龍江省資料總結大綱

1 給出折半查詢的遞迴演算法,並給出演算法時間複雜度性分析。2 將頂點放在兩個集合v1和v2。對每個頂點,檢查其和鄰接點是否在同乙個集合中,如是,則為非二部圖。為此,用整數1和2表示兩個集合。再用一佇列結構存放圖中訪問的頂點。int bpgraph adjmatrix g 判斷以鄰接矩陣表示的圖g是...

2023年黑龍江省資料總結高階

1 二部圖 bipartite graph g v,e 是乙個能將其結點集v分為兩不相交子集v 1和v2 v v1的無向圖,使得 v1中的任何兩個結點在圖g中均不相鄰,v2中的任何結點在圖g中也均不相鄰。1 請各舉乙個結點個數為5的二部圖和非二部圖的例子。2 請用c或pascal編寫乙個函式bipa...

2023年黑龍江省資料總結加強

1 在有向圖g中,如果r到g中的每個結點都有路徑可達,則稱結點r為g的根結點。編寫乙個演算法完成下列功能 1 建立有向圖g的鄰接表儲存結構 2 判斷有向圖g是否有根,若有,則列印出所有根結點的值。2 約瑟夫環問題 josephus問題 是指編號為1 2 n的n n 0 個人按順時針方向圍坐成一圈,現...