西南科技大学OJ题 图的按录入顺序深度优先搜索1068
生活随笔
收集整理的這篇文章主要介紹了
西南科技大学OJ题 图的按录入顺序深度优先搜索1068
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
圖的按錄入順序深度優(yōu)先搜索
?5000(ms)
?10000(kb)
?2295?/?4163
Tags:?深度優(yōu)先
圖的深度優(yōu)先搜索類似于樹的先根遍歷,即從某個(gè)結(jié)點(diǎn)開始,先訪問該結(jié)點(diǎn),然后深度訪問該結(jié)點(diǎn)的第一棵子樹,依次為第二頂子樹。如此進(jìn)行下去,直到所有的結(jié)點(diǎn)都訪問為止。在該題中,假定所有的結(jié)點(diǎn)以“A”至“Z”中的若干字符表示,且要求結(jié)點(diǎn)的訪問順序根據(jù)錄入的順序進(jìn)行訪問。如果結(jié)點(diǎn)錄入的順序?yàn)镠UEAK,從H開始進(jìn)行深度優(yōu)先搜索,則可能的搜索結(jié)果為:H->A->K->U>E.
輸入
第一行為一個(gè)整數(shù)n,表示頂點(diǎn)的個(gè)數(shù),第二行為n個(gè)大寫字母構(gòu)成的字符串,表示頂點(diǎn),接下來是為一個(gè)n*n大小的整數(shù)矩陣,表示圖的鄰接關(guān)系。數(shù)字為0表示不鄰接,否則為相應(yīng)的邊的長度。最后一行為一個(gè)字符,表示要求進(jìn)行深度優(yōu)先搜索的起始頂點(diǎn)。輸出
用一行輸出深度優(yōu)先搜索結(jié)果,起始點(diǎn)為給定的頂點(diǎn)。樣例輸入
5 HUEAK 0 0 2 3 0 0 0 0 7 4 2 0 0 0 0 3 7 0 0 1 0 4 0 1 0 H樣例輸出
HEAUK #include<stdio.h> void CreateMap(int edges[100][100],int n)//創(chuàng)建鄰接矩陣 {for(int i=0;i<n;i++) for(int j=0;j<n;j++) scanf("%d",&edges[i][j]); } void DFS(int i,int a[],char str[],int edges[100][100],int n)//深度優(yōu)先搜索 {if(a[i]==0)//改點(diǎn)為被標(biāo)記時(shí) {printf("%c",str[i]);//輸出對(duì)應(yīng)的符號(hào),并且標(biāo)記 a[i]=1;for(int j=0;j<n;j++)//深度遞歸,遞歸結(jié)束后再j+1;然后再遞歸 {if(edges[i][j]!=0)DFS(j,a,str,edges,n);}} } int main() {int edges[100][100];int n;char str[100];scanf("%d",&n);scanf("%s",str);CreateMap(edges,n);char data;getchar();//抵消回車字符 scanf("%c",&data);for(int i=0;i<n;i++){if(str[i]==data)//找到該字符對(duì)應(yīng)的行 {int a[100]={0};//初始化標(biāo)記 DFS(i,a,str,edges,n);break;}} }?
總結(jié)
以上是生活随笔為你收集整理的西南科技大学OJ题 图的按录入顺序深度优先搜索1068的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用python将图片写入ppt_用pyt
- 下一篇: fluidsim win7版本_Flui