




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
單元5一、選擇題12345ABCAA678910ADCDB1112131415ACBAB16A二、簡答題1.答:=1\*GB3①是強(qiáng)連通圖。=2\*GB3②ID(A)=1,OD(A)=2,ID(B)=1,OD(B)=1,ID(C)=1,OD(C)=1,ID(D)=2,OD(D)=1.2.答:n個頂點(diǎn)的無向圖n個頂點(diǎn)的有向圖問題11的個數(shù)除以2非0非無窮的數(shù)值個數(shù)問題2A[i][j]或A[j][i]是否為1A[i][j]或A[j][i]是否非0非無窮問題3第i行或第i列1的個數(shù)第i行非0非無窮的數(shù)值個數(shù)為其出度,第i列非0非無窮的數(shù)值個數(shù)為其入度3.深度優(yōu)先遍歷:頂點(diǎn)序列ABCDEF邊的序列(A,B)(B,C)(C,D)(D,E)(E,F)廣度優(yōu)先遍歷:頂點(diǎn)序列ABCFED邊的序列(A,B)(A,C)(A,F)(A,E)(B,D)4.答:用Prim和Kruskal求最小生成樹的時間復(fù)雜度分別為O(n2)和O(elge),前者適合于稠密圖,后者適合于稀疏圖。5.答:最小生成樹如下圖所示。6.答:最短路徑如下圖所示。三、算法設(shè)計題1.publicclassExample{ staticfinalintmaxWeight=10000;//權(quán)值無窮大 publicstaticvoidcreateGraph(AMGraphg,Object[]v,intn,Edge[]edge,inte)throwsException{ //構(gòu)建有向圖 for(intk=0;k<n;k++){ g.insertVertex(v[k]); } for(intk=0;k<e;k++){ g.insertEdge(edge[k].i,edge[k].j,edge[k].weight); } } publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub intn=7,e=11; AMGraphg=newAMGraph(n); Character[]v={'A','B','C','D','E','F','G'}; Edge[]edge={newEdge(0,1,4), newEdge(0,2,5),newEdge(1,3,1), newEdge(1,4,2),newEdge(3,0,2), newEdge(3,2,8),newEdge(3,6,2), newEdge(4,3,3),newEdge(4,6,10), newEdge(5,2,1),newEdge(6,5,8) }; try{ createGraph(g,v,n,edge,e); int[]inDegree=newint[n]; int[][]matrix=g.getMatrix(); for(inti=0;i<matrix.length;i++){ for(intj=0;j<matrix.length;j++){ if(matrix[j][i]>0&&matrix[j][i]<maxWeight){ inDegree[i]++; } } } System.out.print("各頂點(diǎn)的出度為:"); for(inti=0;i<inDegree.length;i++){ System.out.println(inDegree[i]+"\t"); } }catch(Exceptione1){ //TODOAuto-generatedcatchblock e1.printStackTrace(); } }}2.publicclassExample{ staticfinalintmaxWeight=10000;//權(quán)值無窮大 publicstaticvoidcreateGraph(AMGraphg,Object[]v,intn,Edge[]edge,inte)throwsException{ //構(gòu)建有向圖 for(intk=0;k<n;k++){ g.insertVertex(v[k]); } for(intk=0;k<e;k++){ g.insertEdge(edge[k].i,edge[k].j,edge[k].weight); } } publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub intn=7,e=11; AMGraphg=newAMGraph(n); Character[]v={'A','B','C','D','E','F','G'}; Edge[]edge={newEdge(0,1,4), newEdge(0,2,5),newEdge(1,3,1), newEdge(1,4,2),newEdge(3,0,2), newEdge(3,2,8),newEdge(3,6,2), newEdge(4,3,3),newEdge(4,6,10), newEdge(5,2,1),newEdge(6,5,8) }; try{ createGraph(g,v,n,edge,e); int[]outDegree=newint[n]; int[][]matrix=g.getMatrix(); for(inti=0;i<matrix.length;i++){ for(intj=0;j<matrix.length;j++){ if(matrix[i][j]>0&&matrix[i][j]<maxWeight){ outDegree[i]++; } } } System.out.print("各頂點(diǎn)的出度為:"); for(inti=0;i<outDegree.length;i++){ System.out.println(outDegree[i]+"\t"); } }catch(Exceptione1){ //TODOAuto-generatedcatchblock e1.printStackTrace(); } }}3.importjava.util.LinkedList;importjava.util.Queue;//計算島嶼數(shù)量的類publicclassIslandCount{//計算島嶼數(shù)量的方法,接收一個二維字符矩陣作為參數(shù)publicstaticintnumIslands(char[][]grid){//如果輸入的網(wǎng)格為空、行數(shù)為0或者列數(shù)為0,則沒有島嶼,返回0if(grid==null||grid.length==0||grid[0].length==0){return0;}introws=grid.length;//獲取網(wǎng)格的行數(shù)intcols=grid[0].length;//獲取網(wǎng)格的列數(shù)intcount=0;//用于記錄島嶼的數(shù)量,初始化為0//遍歷二維矩陣的每一個元素for(inti=0;i<rows;i++){for(intj=0;j<cols;j++){if(grid[i][j]=='1'){//當(dāng)遇到陸地(值為1)時,表示發(fā)現(xiàn)一個新的島嶼//調(diào)用bfs方法進(jìn)行廣度優(yōu)先搜索,標(biāo)記所有與該陸地相連的陸地bfs(grid,i,j);count++;//島嶼數(shù)量加1}}}returncount;//返回島嶼的總數(shù)}//廣度優(yōu)先搜索方法,用于標(biāo)記與給定坐標(biāo)相連的所有陸地privatestaticvoidbfs(char[][]grid,introw,intcol){int[]dx={-1,0,1,0};//x方向的偏移量,用于表示上下左右四個方向int[]dy={0,1,0,-1};//y方向的偏移量,用于表示上下左右四個方向Queue<int[]>queue=newLinkedList<>();//創(chuàng)建一個整數(shù)數(shù)組隊列,用于存儲待訪問的坐標(biāo)queue.add(newint[]{row,col});//將起始坐標(biāo)加入隊列//將當(dāng)前陸地標(biāo)記為已訪問(這里標(biāo)記為2,避免重復(fù)訪問)grid[row][col]='2';while(!queue.isEmpty()){int[]curr=queue.poll();//取出隊列頭部的坐標(biāo)intx=curr[0];inty=curr[1];//遍歷四個方向for(intk=0;k<4;k++){intnewX=x+dx[k];//計算新的x坐標(biāo)intnewY=y+dy[k];//計算新的y坐標(biāo)//判斷新坐標(biāo)是否在網(wǎng)格范圍內(nèi)且對應(yīng)的值為陸地(1)if(newX>=0&&newX<grid.length&&newY>=0&&newY<grid[0].length&&grid[newX][newY]=='1'){//將新的陸地坐標(biāo)加入隊列queue.add(newint[]{newX,newY});//將新訪問的陸地標(biāo)記為已訪問grid[newX][newY]='2';}}}}publicstaticvoidmain(String[]args){char[][]grid={{'1','1','0','0','0'},
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026屆福建省廈門市集美高中高三化學(xué)第一學(xué)期期中質(zhì)量跟蹤監(jiān)視試題含解析
- 必修2化學(xué)能與熱能課件
- 桃樹高效栽培技術(shù)
- 器械規(guī)范清洗與醫(yī)院感染控制
- 直播行業(yè)面試題庫:銀發(fā)直播崗位常見問題解答
- 細(xì)胞免疫監(jiān)測技術(shù)
- 碳酸鋰期貨講解
- 細(xì)胞中的糖類教學(xué)
- 微量泵的使用技術(shù)
- 2026屆云南省臨滄市臨翔區(qū)元江民族中學(xué)化學(xué)高二上期末檢測試題含答案
- 2025歷年退役軍人考試題庫及答案
- 第一二單元月考綜合試卷(試題)四年級上冊數(shù)學(xué)滬教版
- 2025-2030中國土地估價行業(yè)標(biāo)準(zhǔn)體系完善與國際化發(fā)展研究
- 2025級新生軍訓(xùn)開訓(xùn)儀式動員大會
- 2025年醫(yī)院處方審核規(guī)范考核試題(附答案)
- 2025年天津市輔警招聘考試考試試題庫附答案詳解(黃金題型)
- 2025版舊房翻新基礎(chǔ)裝修合同范本
- 鉛衣消毒管理辦法
- 2025新村級后備干部考試題庫(附含答案)
- 寄宿學(xué)校班主任培訓(xùn)課件
- 秋季肌膚護(hù)理課件
評論
0/150
提交評論