DS博客做業06--圖

DS博客做業06--圖

1.本週學習總結

1.思惟導圖

2.談談你對圖結構的認識及學習體會

經過學習圖的一些基本操做,學習了圖的兩種存儲結構:鄰接矩陣和鄰接表,圖的兩種遍歷方法:深度優先遍歷(DFS)和廣度優先遍歷(BFS)。
深度優先遍歷是一個對每一個結點查找其鄰接點的過程,而廣度優先遍歷則是搜索了該結點相連的全部結點。經過學習Prim算法
和Kruskal算法,解決了最小生成樹問題。還學習了拓撲排序,對一個有向無環圖G進行拓撲排序,是將G中全部頂點排成一個線性序列,使得圖中任意一對頂點u和v,
若邊(u,v)∈E(G),則u在線性序列中出如今v以前。這樣的線性序列稱爲知足拓撲次序。

2.1.題目1:7-1 圖着色問題

圖着色問題是一個著名的NP徹底問題。給定無向圖G=(V,E),問能否用K種顏色爲V中的每個頂點分配一種顏色,使得不會有兩個相鄰頂點具備同一種顏色?
但本題並非要你解決這個着色問題,而是對給定的一種顏色分配,請你判斷這是不是圖着色問題的一個解。

2.1.1設計思路

int g[501][501]={0};
int color[501] = { 0 }; 
int search(int v)
{
    遍歷鄰接矩陣
    若是兩點(i,j)已鏈接,且顏色相同color[i]==color[j],返回false
    不然返回true
}
int main
{
        g[501][501]鄰接矩陣輸入鏈接圖
        color[501]輸入並保存顏色
        col集合判斷顏色數量
        若是顏色數量正確和search函數返回true,則輸出yes
        不然輸入no
}

2.1.2代碼截圖

2.1.3本題PTA提交列表說明。

set col建立了一個col集合,是一種包含已排序對象的關聯容器,col.insert(color[j])中把元素color[j]存放進col集合中,
有重複部分不會再被存儲,memset(color, 0, sizeof(color)),將color所指向的某一塊內存中的後個sizeof(color)字節的內容
所有設置爲ch指定的ASCII值,它是對較大的結構體或數組進行清零操做的一種最快方法.
    這個寫法是借鑑別人的的代碼

2.2.題目2:7-4 公路村村通

2.2.1設計思路

void CreateMGraph(int v,int n )
{
    鄰接矩陣賦初值
    若是爲對角線上的元素,g[i][j]=0
    不然g[i][j]=INF=32767
    輸入鏈接圖
}
int Prim(int v,int n)
{
    prim算法,其中若是當min=INF時輸出-1,安全退出函數
                            不然令 count=count+min
    函數最後返回count;
}
int g[1005][1005];
int main()
{
        建立鄰接矩陣
        m=Prim(1,v)從頂點1開始執行prim算法
        輸出m
}

2.2.2代碼截圖



2.2.3本題PTA提交列表說明

![](https://img2018.cnblogs.com/blog/1474675/201906/1474675-20190609180242224-140467305.png)
這個不能取等,還有輸出-1的時候要結束

2.3.題目3:六度空間

「六度空間」理論雖然獲得普遍的認同,而且正在獲得愈來愈多的應用。可是數十年來,試圖驗證這個理論始終是許多社會學家努力追求的目標。
然而因爲歷史的緣由,這樣的研究具備太大的侷限性和困難。隨着當代人的聯絡主要依賴於電話、短信、微信以及因特網上即時通訊等工具,
可以體現社交網絡關係的一手數據已經逐漸使得「六度空間」理論的驗證成爲可能。
假如給你一個社交網絡圖,請你對每一個節點計算符合「六度空間」理論的結點佔結點總數的百分比。

2.3.2代碼截圖


2.3.3本題PTA提交列表說明

三、上機考試錯題及處理辦法

上機時只打出了兩題,回來把公路村村通打了


相關文章
相關標籤/搜索