学习c++算法的时候到了图这里就卡住了,学go的时候又重新拿起了书,曾经回过头的南墙,有一天还是会想再撞一撞。
利用深度优先搜索来遍历图
package main
import "fmt"
var vertex = 5
var edge = 5
var sum int
var book[10]int
var arr[10][10]int
func dfs(n int){
fmt.Println(n)
sum++
if sum == vertex {return}
for i:=1; i<=vertex; i++ {
if arr[n][i]==1 && book[i]==0 {
book[i] = 1
dfs(i)
}
}
}
func main(){
var x , y int
//初始化二维数组
for i:=1; i<=vertex; i++ {
for j:=1; j<=vertex; j++ {
if i==j {
arr[i][j]=0
}else{
arr[i][j]=9
}
}
}
//读入边
for i:=1; i<=edge; i++ {
fmt.Scan(&x,&y)
arr[x][y]=1
arr[y][x]=1
}
//从节点1开始遍历
book[1]=1
dfs(1)
}用excel表格做了一个dfs函数运行过程的推导,深度优先搜索遍历的最终结果是1,2,4,3,5。



