日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DS博客作业06——图

發(fā)布時(shí)間:2023/12/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DS博客作业06——图 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.本周學(xué)習(xí)總結(jié)(0--2分)

1.思維導(dǎo)圖

2.談?wù)勀銓?duì)圖結(jié)構(gòu)的認(rèn)識(shí)及學(xué)習(xí)體會(huì)。

這章學(xué)習(xí)了圖,學(xué)習(xí)了圖的兩種存儲(chǔ)結(jié)構(gòu):鄰接矩陣和鄰接表。這兩種存儲(chǔ)結(jié)構(gòu)都用到了之前學(xué)c時(shí)學(xué)到的結(jié)構(gòu)體,將結(jié)構(gòu)體充分運(yùn)用。知道了圖的兩種遍歷方法:深度優(yōu)先遍歷(DFS)和廣度優(yōu)先遍歷(BFS)。深度優(yōu)先遍歷是一個(gè)對(duì)每個(gè)結(jié)點(diǎn)查找其鄰接點(diǎn)的過程,而廣度優(yōu)先遍歷則搜索了所有節(jié)點(diǎn)。 通過學(xué)習(xí)Prim算法和Kruskal算法,解決了最小生成樹問題。在學(xué)習(xí)Prim算法的同時(shí),還提到了貪心算法,之前學(xué)習(xí)的貪心算法只能解決局部最優(yōu)的問題,所以最小生成樹的問題不可以用貪心算法來做。 學(xué)習(xí)最短路徑時(shí),先學(xué)的Dijstra算法,但是Dijstra算法存在只能解決最短路徑,而不能解決最長路徑的問題,由此引進(jìn)了Floyd算法,在滿足最小路徑查找的同時(shí)也能滿足最長路徑的查找。 拓?fù)渑判蚝完P(guān)鍵路徑都是對(duì)有向無環(huán)圖的操作。拓?fù)渑判蚩梢杂脕砼袛嘁粋€(gè)有向圖是否有環(huán),還可以解決教學(xué)系統(tǒng)中的排課問題;關(guān)鍵路徑則是用來解決最短工時(shí)的問題。

2.PTA實(shí)驗(yàn)作業(yè)(6分)

2.1.7-1 圖著色問題

圖著色問題是一個(gè)著名的NP完全問題。給定無向圖G=(V,E),問可否用K種顏色為V中的每一個(gè)頂點(diǎn)分配一種顏色,使得不會(huì)有兩個(gè)相鄰頂點(diǎn)具有同一種顏色? 但本題并不是要你解決這個(gè)著色問題,而是對(duì)給定的一種顏色分配,請(qǐng)你判斷這是否是圖著色問題的一個(gè)解。

2.1.1設(shè)計(jì)思路(偽代碼)

//設(shè)計(jì)思路 先建一個(gè)無向圖的鄰接矩陣。在每次判斷解是否正確的過程中:先判斷使用的顏色是否為k種,是,則繼續(xù)操作,反之,輸出“No”進(jìn)入下一輪循環(huán);用雙重for循環(huán)判斷每個(gè)結(jié)點(diǎn)的臨邊顏色是否符合要求。 //偽代碼(主函數(shù)) 定義三個(gè)整型變量v、e、k、n,分別用于存放結(jié)點(diǎn)數(shù)、邊數(shù)、顏色數(shù),和 解的數(shù)量; 輸入v、e、k; 定義一個(gè)MGraph型變量G; 利用CreatMGrap函數(shù)創(chuàng)建無向圖; 輸入解的數(shù)量n; while n-- do定義int型變量:flag=1,用于控制解不正確時(shí)的情況;num數(shù)組,用于存儲(chǔ)各個(gè)結(jié)點(diǎn)的顏色;count=0,用于計(jì)算各個(gè)接中使用的顏色數(shù)量;hash數(shù)組,用于控制顏色數(shù)量的計(jì)算;for i=0 to G.n do輸入num[i];if hash[num[i]]等于0 then //num[i]顏色沒出現(xiàn)過時(shí)hash[num[i]]++;count++;end ifend forif count的值與k不相等時(shí) then輸出“No”continue進(jìn)入下一輪循環(huán)end iffor i=0 to G.n dofor j=i to G.n do //無向圖的鄰接矩陣關(guān)于對(duì)角線對(duì)稱,所以只要判斷半個(gè)鄰接矩陣if i與j不相等 thenif i與j結(jié)點(diǎn)的顏色相同 且 i與j結(jié)點(diǎn)間有邊 then輸出“No”flag=0breakend ifend ifend forif flag=0 thenbreakend ifend forif flag=1 then輸出“Yes”end if end while

2.1.2代碼截圖(注意,截圖,截圖,截圖。不要粘貼博客上。)



2.1.3本題PTA提交列表說明。

  • Q1:第一次提交,是把判斷解是否正確的那一部分寫成一個(gè)函數(shù)的,結(jié)果提交上去顯示答案錯(cuò)誤。當(dāng)時(shí)以為我的函數(shù)有什么問題,就把函數(shù)拆了,直接寫到主函數(shù)里頭,結(jié)果還是答案錯(cuò)誤。
  • A1:我想著代碼沒問題啊,調(diào)試也沒毛病,突然,想到答案錯(cuò)誤還有一種情況:輸出的問題,看一眼題目要求,好吧,yes和no的首字母要大寫,我沒大寫。
  • Q2:然后,改完以后,部分正確,還有兩分不知道錯(cuò)在哪,提示的是有小于k種顏色的情況錯(cuò)誤。
  • A2:當(dāng)時(shí)在想,我的做法小于k種顏色的情況也可以正確判斷啊,為什么會(huì)顯示這個(gè)錯(cuò)誤。當(dāng)時(shí)舍友在一邊,我就問她著色的時(shí)候可不可以不用到k種顏色這么多。她說,當(dāng)然可以啊。然后,我就很納悶,到底哪兒錯(cuò)了。后來抱著試一試的心態(tài),將使用的顏色小于k的情況也當(dāng)走是錯(cuò)的,結(jié)果就過了。

2.2 7-6 修建道路

N個(gè)村莊,從1到N編號(hào),現(xiàn)在請(qǐng)您興建一些路使得任何兩個(gè)村莊彼此連通。我們稱村莊A和B是連通的,當(dāng)且僅當(dāng)在A和B之間存在一條路,或者存在一個(gè)存在C,使得A和C之間有一條路,并且C和B是連通的。 已知在一些村莊之間已經(jīng)有了一些路,您的工作是再興建一些路,使得所有的村莊都是連通的,并且興建的路的長度是最小的。

2.2.1設(shè)計(jì)思路(偽代碼)

//偽代碼(Prim函數(shù)) 定義一個(gè)int型數(shù)組lowcost[],變量MIN用于存放最小值,v,賦初值為1,cost用于計(jì)算花費(fèi),賦初值為0; 定義一個(gè)int型數(shù)組closest[],用于存放最近的結(jié)點(diǎn),變量i,j,k,用于循環(huán)中 定義一個(gè)ArcNode型變量p 將0賦值給lowcost[v] for i=2 to 圖的節(jié)點(diǎn)數(shù) dolowcost[i]=10000001 //賦初值,令數(shù)組的初值最大 end for 將G->adjlist[v].firstarc的值賦給p while p不為空 do將p->weight的值賦給lowcost[p->adjvex]將v的值賦給closest[p->adjvex]令p等于p指向的下一個(gè)結(jié)點(diǎn) end while for i =1 to 圖的節(jié)點(diǎn)數(shù) do賦初值1000000給MINfor j=1 to 圖的結(jié)點(diǎn)數(shù) doif lowcost[j]不等于-1 且 小于MIN then將 lowcost[j]的值賦給MIN將j的值賦給kend ifend for將MIN的值累加給costlowcost[k]=-1將G->adjlist[k].firstarc的值賦給pwhile p不為空 doif p->weight小于lowcost[p->adjvex] 且 lowcost[p->adjvex]不等于-1 then將p->weight的值賦給lowcost[p->adjvex]將k的值賦給closest[p->adjvex]end if令p等于p指向的下一個(gè)結(jié)點(diǎn)end while end while 輸出cost

2.2.2代碼截圖(注意,截圖,截圖,截圖。不要粘貼博客上。)





2.2.3本題PTA提交列表說明。

  • Q1:這題答案錯(cuò)誤,一開始沒發(fā)現(xiàn)什么毛病,該賦值的也賦值了,后來無意間發(fā)現(xiàn),好吧,賦初值的位置放錯(cuò)了。
  • A1:改過來之后就對(duì)了。

    2.3 7-7 旅游規(guī)劃

有了一張自駕旅游路線圖,你會(huì)知道城市間的高速公路長度、以及該公路要收取的過路費(fèi)。現(xiàn)在需要你寫一個(gè)程序,幫助前來咨詢的游客找一條出發(fā)地和目的地之間的最短路徑。如果有若干條路徑都是最短的,那么需要輸出最便宜的一條路徑。

2.3.1設(shè)計(jì)思路(偽代碼)

//偽代碼(Dijkstra函數(shù)) 定義int型變量v,i,MIN1,MIN2 定義ArcNode型變量p 定義int型數(shù)組dist1[1000]、path[1000]、dist2[1000] 定義一個(gè)int型靜態(tài)局部變量數(shù)組visted[1000] for i=0 to 圖的節(jié)點(diǎn)數(shù) dodist1[i]=100000dist2[i]=100000path[i]=-1 end for 將Begin的值賦給v 將0分別賦給dist1[v]和dist2[v],將v賦給path[v] while 1 do將100000分別賦給MIN1和MIN2for i=0 to 圖的結(jié)點(diǎn)數(shù) doif dist1[i]的值小于MIN1 且 visted不等于1 thenif dist1[i]的值小于MIN1 或者 dist2[i]的值小于MIN2 then將dist1[i]的值賦給MIN1將dist2[i]的值賦給MIN2將i的值賦給vend ifend ifend forif v等于END then退出循環(huán)end ifvisted[v]=1將G->adjlist[v].firstarc的值賦給pwhile p不為空時(shí) doif p->length與diat1[v]的和 小于等于 dist1[p->adjvex] thenif p->length與diat1[v]的和 小于 dist1[p->adjvex] 或者 p->price與diat2[v]的和 小于 dist2[p->adjvex] then將p->length與diat1[v]的和賦給dist1[p->adjvex]將p->price與diat2[v]的和 賦給dist2[p->adjvex]將v的值賦給path[p->adjvex]end ifend if p等于p指向的下一個(gè)結(jié)點(diǎn)end while end while 輸出dist1[v]和dist2[v]的值

2.3.2代碼截圖(注意,截圖,截圖,截圖。不要粘貼博客上。)





2.3.3本題PTA提交列表說明。

  • 這題主要是關(guān)于迪杰斯特拉算法的一個(gè)應(yīng)用。代碼基本都是照著書上的代碼修修改改完成的。然后調(diào)試什么的都在VS上完成了。

    3、上機(jī)考試錯(cuò)題及處理辦法(-2--2分)

  • 當(dāng)時(shí)上機(jī)考試的時(shí)候,因?yàn)闀r(shí)間問題和對(duì)這章知識(shí)的不熟悉,只做了兩道題(兩道題都做出來了)。當(dāng)時(shí)還剩幾分鐘的時(shí)候看了一下六度空間的題目,當(dāng)時(shí)代碼打了一半半時(shí)間就到了,就沒打完,就把回來后打的代碼貼上來。

//解題思路 利用廣度優(yōu)先遍歷的算法來找到距離小于6的結(jié)點(diǎn)個(gè)數(shù),來算出百分比 //偽代碼(bfs函數(shù)) 定義int型變量i,數(shù)組vis[10001],并賦初值為0 定義int型變量last,令其等于num(用來記錄每層的最后一個(gè)元素);tail,用于記錄每層壓入時(shí)的結(jié)點(diǎn),level,并賦初值為0;count賦初值為1 定義一個(gè)int型隊(duì)列q 將num入隊(duì) 將1賦給vis[num] while q不為空時(shí) do將隊(duì)頭的值賦給num出隊(duì)for i=1 to v doif g[num][i]等于1 且 vis[i]等于0 thencount++將1賦給vis[i]將i入隊(duì)將i 賦給tailend ifend forif last等于num then //彈出的x等于當(dāng)前層的最后一個(gè)元素level++將tail的值賦給lastend ifif level的值為6時(shí) then退出循環(huán)end if end while 將count的值返回主函數(shù)



轉(zhuǎn)載于:https://www.cnblogs.com/Lay-549/p/10964528.html

總結(jié)

以上是生活随笔為你收集整理的DS博客作业06——图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。