2019海南省資料簡介深入

2022-11-11 04:51:02 字數 2018 閱讀 1943

1、在有向圖g中,如果r到g中的每個結點都有路徑可達,則稱結點r為g的根結點。編寫乙個演算法完成下列功能:(1).建立有向圖g的鄰接表儲存結構;(2).判斷有向圖g是否有根,若有,則列印出所有根結點的值。

2、兩棵空二叉樹或僅有根結點的二叉樹相似;對非空二叉樹,可判左右子樹是否相似,採用遞迴演算法。

int similar(bitree p,q) //判斷二叉樹p和q是否相似//結束similar

3、矩陣中元素按行和按列都已排序,要求查詢時間複雜度為o(m+n),因此不能採用常規的二層迴圈的查詢。可以先從右上角(i=a,j=d)元素與x比較,只有三種情況:一是a[i,j]>x,這情況下向j小的方向繼續查詢;二是a[i,j]void search(datatype a[ ][ ], int a,b,c,d, datatype x)

//n*m矩陣a,行下標從a到b,列下標從c到d,本演算法查詢x是否在矩陣a中.else if (a[i][j]>x) j--; else i++;

if(flag) printf(「a[%d][%d]=%d」,i,j,x假定x為整型.else printf(「矩陣a中無%d元素」,x);}演算法search結束。

[演算法討論]演算法中查詢x的路線從右上角開始,向下(當x>a[i,j])或向左(當x4、4、void linklist_reverse(linklist &l)

//鍊錶的就地逆置;為簡化演算法,假設表長大於2

q->next=p;s->next=q;l->next=s;}//linklist_reverse

5、二路插入排序是將待排關鍵字序列r[1..n]中關鍵字分二路分別按序插入到輔助向量d[1..n]前半部和後半部(注:向量d可視為迴圈表),其原則為,先將r[l]賦給d[1],再從

r[2]記錄開始分二路插入。編寫實現二路插入排序演算法。

6、因為後序遍歷棧中保留當前結點的祖先的資訊,用一變數儲存棧的最高棧頂指標,每當退棧時,棧頂指標高於儲存最高棧頂指標的值時,則將該棧倒入輔助棧中,輔助棧始終儲存最長路徑長度上的結點,直至後序遍歷完畢,則輔助棧中內容即為所求。void longestpath(bitree bt)//求二叉樹中的第一條最長路徑長度

//沿左分枝向下if(tag[top]==1) //當前結點的右分枝已遍歷

//保留當前最長路徑到l棧,記住最高棧頂指標,退棧}

else if(top>0) //沿右子分枝向下}//while(p!=null||top>0)}//結束longestpath7、我們可用「破圈法」求解帶權連通無向圖的一棵最小代價生成樹。所謂「破圈法」就是「任取一圈,去掉圈上權最大的邊」,反覆執行這一步驟,直到沒有圈為止。

請給出用「破圈法」求解給定的帶權連通無向圖的一棵最小代價生成樹的詳細演算法,並用程式實現你所給出的演算法。注:圈就是迴路。

8、連通圖的生成樹包括圖中的全部n個頂點和足以使圖連通的n-1條邊,最小生成樹是邊上權值之和最小的生成樹。故可按權值從大到小對邊進行排序,然後從大到小將邊刪除。每刪除一條當前權值最大的邊後,就去測試圖是否仍連通,若不再連通,則將該邊恢復。

若仍連通,繼續向下刪;直到剩n-1條邊為止。void spntree (adjlist g)

//用「破圈法」求解帶權連通無向圖的一棵最小代價生成樹。

node; //設頂點資訊就是頂點編號,權是整型數node edge;

scanf( "%d%d",&e,&n) ; //輸入邊數和頂點數。

for (i=1;i<=e;i輸入e條邊:頂點,權值。

scanf("%d%d%d" ,&edge[i].i ,&edge[i].j ,&edge[i].w);

for (i=2;i<=e;i++) //按邊上的權值大小,對邊進行逆序排序。//測試下一條邊edge[k],權值置0表示該邊被刪除k++; //下條邊}//while

}//演算法結束。

connect()是測試圖是否連通的函式,可用圖的遍歷實現,

9、二路插入排序是將待排關鍵字序列r[1..n]中關鍵字分二路分別按序插入到輔助向量d[1..n]前半部和後半部(注:

向量d可視為迴圈表),其原則為,先將r[l]賦給d[1],再從r[2]記錄開始分二路插入。編寫實現二路插入排序演算法。

2023年海南省資料總結摘要

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

2023年海南省資料總結綱要

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

2023年海南省資料總結入門

1 氣泡排序演算法是把大的元素向上移 氣泡的上浮 也可以把小的元素向下移 氣泡的下沉 請給出上浮和下沉過程交替的氣泡排序演算法。48.有n個記錄儲存在帶頭結點的雙向鍊錶中,現用雙向起泡排序法對其按上公升序進行排序,請寫出這種排序的演算法。注 雙向起泡排序即相鄰兩趟排序向相反方向起泡 2 矩陣中元素按...