2019浙江省資料簡介加強

2022-07-03 10:30:08 字數 912 閱讀 7137

1、題目中要求矩陣兩行元素的平均值按遞增順序排序,由於每行元素個數相等,按平均值排列與按每行元素之和排列是乙個意思。所以應先求出各行元素之和,放入一維陣列中,然後選擇一種排序方法,對該陣列進行排序,注意在排序時若有元素移動,則與之相應的行中各元素也必須做相應變動。

void translation(float *matrix,int n)

//本演算法對n×n的矩陣matrix,通過行變換,使其各行元素的平均值按遞增排列。 //for i

for(i=0; i

sum=p[i]; p[i]=p[k]; p[k]=sum; //交換一維陣列中元素之和.

}//if

}//for i

free(p); //釋放p陣列.

}// translation

[演算法分析] 演算法中使用選擇法排序,比較次數較多,但資料交換(移動)較少.若用其它排序方法,雖可減少比較次數,但資料移動會增多.演算法時間複雜度為o(n2).

2、本題應使用深度優先遍歷,從主調函式進入dfs(v)時,開始記數,若退出dfs()前,已訪問完有向圖的全部頂點(設為n個),則有向圖有根,v為根結點。將n個頂點從1到n編號,各呼叫一次dfs()過程,就可以求出全部的根結點。題中有向圖的鄰接表儲存結構、記頂點個數的變數、以及訪問標記陣列等均設計為全域性變數。

建立有向圖g 的鄰接表儲存結構參見上面第2題,這裡只給出判斷有向圖是否有根的演算法。

int num=0,visited=0 //num記訪問頂點個數,訪問陣列visited初始化。 const n=使用者定義的頂點數;

adjlist g用鄰接表作儲存結構的有向圖g。

void dfs(v)

//ifp=g[v].firstarc;

while (p)

{if (visied[p->adjvex]==0) dfs (p->adjvex);

2023年浙江省資料總結加強

1 對二叉樹的某層上的結點進行運算,採用佇列結構按層次遍歷最適宜。int leafklevel bitree bt,int k 求二叉樹bt 的第k k 1 層上葉子結點個數 last移到指向下層最右一元素 if level k return leaf層數大於k 後退出執行 while 結束leaf...

2023年浙江省資料總結要領

1 將頂點放在兩個集合v1和v2。對每個頂點,檢查其和鄰接點是否在同乙個集合中,如是,則為非二部圖。為此,用整數1和2表示兩個集合。再用一佇列結構存放圖中訪問的頂點。int bpgraph adjmatrix g 判斷以鄰接矩陣表示的圖g是否是二部圖。初始化,各頂點未確定屬於那個集合 q 1 1 r...

2023年浙江省資料總結摘要

1 二叉樹的層次遍歷序列的第乙個結點是二叉樹的根。實際上,層次遍歷序列中的每個結點都是 區域性根 確定根後,到二叉樹的中序序列中,查到該結點,該結點將二叉樹分為 左根右 三部分。若左 右子樹均有,則層次序列根結點的後面應是左右子樹的根 若中序序列中只有左子樹或只有右子樹,則在層次序列的根結點後也只有...