1、給定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演算法構造其最小生成樹(每選取一條邊畫乙個圖)。
2、將頂點放在兩個集合v1和v2。對每個頂點,檢查其和鄰接點是否在同乙個集合中,如是,則為非二部圖。為此,用整數1和2表示兩個集合。再用一佇列結構存放圖中訪問的頂點。
int bpgraph (adjmatrix g)
//判斷以鄰接矩陣表示的圖g是否是二部圖。
//初始化,各頂點未確定屬於那個集合
q[1]=1; r=1; s[1]=1;//頂點1放入集合s1
while(f //鄰接點入佇列
else if (s[j]==s[v]) return(0);} //非二部圖
}//if (!visited[v])
}//while
return(1); }//是二部圖
[演算法討論] 題目給的是連通無向圖,若非連通,則演算法要修改。
3、後序遍歷最後訪問根結點,即在遞迴演算法中,根是壓在棧底的。採用後序非遞迴演算法,棧中存放二叉樹結點的指標,當訪問到某結點時,棧中所有元素均為該結點的祖先。本題要找p和q 的最近共同祖先結點r ,不失一般性,設p在q的左邊。
後序遍歷必然先遍歷到結點p,棧中元素均為p的祖先。將棧拷入另一輔助棧中。再繼續遍歷到結點q時,將棧中元素從棧頂開始逐個到輔助棧中去匹配,第乙個匹配(即相等)的元素就是結點p 和q的最近公共祖先。
typedef struct
stack;
stack s,s1;//棧,容量夠大
bitree ancestor(bitree root,p,q,r)//求二叉樹上結點p和q的最近的共同祖先結點r。 //沿左分枝向下
if(bt==p) //不失一般性,假定p在q的左側,遇結點p時,棧中元素均為p的祖先結點//將棧s的元素轉入輔助棧s1 儲存
if(bt==q) //找到q 結點。
for(i=top;i>0;i--)//;將棧中元素的樹結點到s1去匹配
}while(top!=0 && s[top].tag==1) top退棧
if (top!=0){s[top].tag=1;bt=s[top].t->rchild;} //沿右分枝向下遍歷
}//結束while(bt!=null ||top>0)
return(null);//q、p無公共祖先
}//結束ancestor
4、對一般二叉樹,僅根據乙個先序、中序、後序遍歷,不能確定另乙個遍歷序列。但對於滿二叉樹,任一結點的左右子樹均含有數量相等的結點,根據此性質,可將任一遍歷序列轉為另一遍歷序列(即任一遍歷序列均可確定一棵二叉樹)。
void pretopost(elemtype pre ,post,int l1,h1,l2,h2)
//將滿二叉樹的先序序列轉為後序序列,l1,h1,l2,h2是序列初始和最後結點的下標。
}//pretopost
32. .葉子結點只有在遍歷中才能知道,這裡使用中序遞迴遍歷。
設定前驅結點指標pre,初始為空。第乙個葉子結點由指標head指向,遍歷到葉子結點時,就將它前驅的rchild指標指向它,最後葉子結點的rchild為空。
linkedlist head,pre=null; //全域性變數
linkedlist inorder(bitree bt)
//中序遍歷二叉樹bt,將葉子結點從左到右鏈成乙個單鏈表,表頭指標為head
//處理第乙個葉子結點
else //將葉子結點鏈入鍊錶
inorder(bt->rchild中序遍歷左子樹
pre->rchild=null設定鍊錶尾
}return(head); } //inorder
時間複雜度為o(n),輔助變數使用head和pre,棧空間複雜度o(n)
2019大慶市數學中考真題
2012年大慶市初中公升學統一考試 數學試題 考生注意 1 考生須將自己的姓名 准考證號填寫到試卷和答題卡規定的位置 2 選擇題每小題選出答案後,用2b鉛筆把答題卡上對應題目的答案標號塗黑,如需改動,用橡皮擦乾淨後,再選塗其他答案標號 3 非選擇題用黑色墨水簽字筆在答題卡上書寫作答,在試題卷上作答無...
2019大慶市中考數學模擬試題
初四數學測試題 一 選擇題 共10小題 1 如圖數軸的a b c三點所表示的數分別為a b c 若 a b 3,b c 5,且原點o與a b的距離分別為4 1,則關於o的位置,下列敘述何者正確?a 在a的左邊 b 介於a b之間 c 介於b c之間 d 在c的右邊 2 乙個不透明布袋裡裝有1個白球 ...
2023年大慶市導遊員年審試題
姓名身份證號 導遊員ic卡號聯絡 一 選擇題 54分,每題3分 1 受組團社委派,作為其代表,監督接待社服務,保證組團社的接待計畫實施,並提供陪同導遊服務的是 a 地陪 b 全陪 c 領隊 d 遊客 2 作為一名合格的導遊員,應具有乙個 的身體素質。a 無足輕重b 堪比運動員 c 健康且體力充沛 d...