DS博客做業06--圖

1.本週學習總結

1.1思惟導圖

1.2學習體會

這兩週學習的內容主要是圖結構,圖結構有不少的操做以及算法,其中鄰接表和鄰接矩陣都是圖中的重要存儲結構,建圖的方式也包含了鄰接矩陣見圖和鄰接表建圖兩種方式,兩種建表的方式有不一樣的地方,首先是鄰接矩陣,鄰接矩陣建表比鄰接圖稍微簡便一些,對於無向圖的鄰接矩陣,只須要兩重循環,第一個循環將矩陣中全部元素的值賦0,而後輸入鄰截表的頂點和弧數,再次進行循環,把相鄰的兩個頂點用1來表示。鄰接表建表用的方法是鏈表建表,須要在adjlist數組的每一個元素後面都插上一串鏈,插入的方法通常選擇頭插法。若是遇到帶權圖的話,鄰接矩陣見圖方法不變,第二次循環輸入的時候就是權值了,而且還要設置一個無窮符號的插入判斷:而對於鄰接表來講,須要插入的節點改變,每一個節點都要作出修改。不光是建圖,圖的遍歷也是一塊內容,包括深度和廣度遍歷,至關於層次遍歷和優先遍歷。便利以後學習的就是幾種算法了,Kruscal算法和prim算法,詳細的作法就不介紹了。接下來的是頂點到頂點之間的最短路徑的尋找和圖的拓撲排序。算法

2.PTA實驗做業

2.1.題目1:7-1 圖着色問題 (25 分)

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

2.1.1設計思路

2.1.2代碼截圖



2.1.3本題PTA提交列表說明。



·Q1:建樹的時候沒問題 由於都是按照樹上的思路進行創建的 問題出在第一次對於顏色種數的判斷方面 沒有創建多個數組 致使接下去的數組所有被修改
·A2:按照同窗的建議 只要敢建就不怕多 多建了c數組
·Q2:創建數組修改完判斷1以後 後面的判斷又出問題了 g->a[d[i]][d[j]]==1 && e[i]==e[j]這個判斷條件除了問題 沒有加入e數組來臨時存放
·A2:百度了一下判斷的條件 而後進行修改數組

2.2.題目2: 7-3 六度空間 (30 分)

「六度空間」理論又稱做「六度分隔(Six Degrees of Separation)」理論。這個理論能夠通俗地闡述爲:「你和任何一個陌生人之間所間隔的人不會超過六個,也就是說,最多經過五我的你就可以認識任何一個陌生人。」函數

2.2.1設計思路

2.2.2代碼截圖


2.2.3本題PTA提交列表說明。



·Q1:這道題主要思路是深度遍歷以後進行判斷操做 第一次在跳到下一層的時候沒有及時更改最後一個元素的位置 致使錯誤
·A1:設置一個變量對每個最後節點進行存儲 在進行改變
·Q2:主函數中的輸出公式有問題 給不出題目要求的格式和答案
·A2:根據同窗的知到進行修改 發現要用%.2f而不是lf學習

2.3.題目3:7-7 旅遊規劃 (25 分)

有了一張自駕旅遊路線圖,你會知道城市間的高速公路長度、以及該公路要收取的過路費。如今須要你寫一個程序,幫助前來諮詢的遊客找一條出發地和目的地之間的最短路徑。若是有若干條路徑都是最短的,那麼須要輸出最便宜的一條路徑。測試

2.3.1設計思路

2.3.2代碼截圖




2.3.3本題PTA提交列表說明。


·Q1:這道題的關鍵在於對於路徑的修改和路徑權值的計算方面 開始的錯誤犯在了prim算法對於路徑的修改方面 算法實現錯誤
·A1:搬書上的算法不行 本身再對算法的一些小細節處進行修改 如else if (!know[j] && (min + G[k][j][0] == distance[j]) && (cost + G[k][j][1] < pay[j]))原本是直接按照書上的來寫的
·Q2:改完Dijkstra函數以後發現後面搬到pta上顯示答案錯誤 調了好久也找不出錯誤緣由
·A2:後來有大佬建議我輸入大一點的值試一試 嘭 系統崩潰 因此在輸出的地方加上了判斷 在進行輸出設計

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

3.1錯題1:6-1 jmu-ds-最短路徑 (20 分)

給定一個有向圖,規定源點爲0,求源點0到其餘頂點最短路徑。3d

3.1.1代碼截圖

本題無操做

3.1.2錯誤緣由及反思

這道題的作法至關於pta編程題的最後一題 也就是上面所寫的旅遊規劃查找路徑的題目,由於這道題在上機考試以前沒有着重複習 並且在考試的時候分值佔比較低 因此就沒有去實現代碼 這道題的代碼其實也不算複雜 關鍵是印象的問題 作的時候心思都放在了prim算法上面 因此對於最短路徑的查找沒有重視起來 致使考試的時候也是一臉懵 這道題你肯定咱們寫過??? 之後仍是得對於每一處細節都要重視起來 上課的時候講過的內容得好好複習掌握調試

3.2錯題2:6-3 jmu-ds-拓撲排序 (20 分)

給定一個有向圖,求其拓撲序列,如有環路,輸出error!blog

3.2.1代碼截圖



3.2.2錯誤緣由及反思

這道題我真的是十分的無奈 考試的時候檢查了半天都檢查不出錯誤在哪 一點思緒都沒有 只有一個測試點是過的 在pta上都能過的代碼拿到考試的時候就過不了 一頭霧水 檢查下來也沒什麼錯誤 調試的時候發現輸出的地方出了問題 不管輸入什麼 都只會輸出error 多是flag的改變或者是G->n這個地方被修改了而我沒發現 總之這道題真的蠻奇怪的 給同窗看了以後他們也找不出什麼明顯錯誤 之後的代碼若是是背下來的仍是的明白其中的道理和每一步的意義在於什麼。

3.3錯題3:

7-1 六度空間 (20 分)
「六度空間」理論又稱做「六度分隔(Six Degrees of Separation)」理論。這個理論能夠通俗地闡述爲:「你和任何一個陌生人之間所間隔的人不會超過六個,也就是說,最多經過五我的你就可以認識任何一個陌生人。」如圖1所示。

3.3.1代碼截圖



3.3.2錯誤緣由及反思

話說這道題也是pta上的原題之一 考試的時候寫下去也是不對 後來認真檢查了代碼 仍是有不少地方是有紕漏的 首先是對於變量的定義 其中的i和v變量都沒有定義正確 並且在函數當中也沒有使用到 這是一個問題 另外在visited這個數組也沒有定義和使用正確 最大的問題出在bfs深度遍歷函數當中 由於這個題須要對每一層進行遍歷 至少我在寫pta的時候是這樣子作的 後面有同窗告訴我另一種方式 也就是定義其餘變量進行存儲 彷佛也比較方便一點 可是在實現的時候仍是出了問題 因此之後同窗那邊給的代碼本身要先看清楚思路是什麼 再去敲一遍加深印象

3.4題目4:7-2 公路村村通 (30 分)

現有村落間道路的統計數據表中,列出了有可能建設成標準公路的若干條道路的成本,求使每一個村落都有公路連通所須要的最低成本。

3.4.1代碼截圖:

3.4.2錯誤緣由及反思

這也是原題之一 當時寫這道題的時候只剩下10分鐘了 並且前面的兩道題目錯誤也沒有檢查出來 因此非常着急 一心想的是能不能用什麼歪門邪道把測試點套出來一個試試 結果失敗了結 老師也在一直說這道題的結構體直接用上面函數題的結構體就能夠了 而後接下來只要把prim算法的函數寫出來就好了 可是對於prim算法 對他的印象侷限於書裏的代碼 沒有看書寫出來的代碼根本不行 總的來講上課包括課後的不少東西 須要本身再去總結複習把知識轉化爲本身的理解才行

相關文章
相關標籤/搜索