码迷,mamicode.com
首页 > 编程语言 > 详细

深度算法源程序

时间:2018-03-03 18:16:12      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:第一个   out   struct   turn   pos   mat   [1]   string   ios   

#include <iostream>
#include <string>
#include <cstdio>
using namespace std;

#define MaxVnum 50
typedef double A_Matrix[MaxVnum][MaxVnum];
typedef struct{
int vexnum,arcnum;
A_Matrix arcs;
}Graph;

int v = 0;

//为了方便,我们直接手动实现地图矩阵的加载
void CreateGraph(Graph &G)
{
G.vexnum=8;
G.arcnum=9;
G.arcs[0][1]=1;
G.arcs[0][2]=1;
G.arcs[1][3]=1;
G.arcs[1][4]=1;
G.arcs[2][5]=1;
G.arcs[2][6]=1;
G.arcs[3][1]=1;
G.arcs[3][7]=1;
G.arcs[3][6]=1;
G.arcs[4][1]=1;
G.arcs[4][7]=1;
G.arcs[5][2]=1;
G.arcs[5][6]=1;
G.arcs[5][5]=1;
G.arcs[6][2]=1;
G.arcs[6][5]=1;
G.arcs[7][3]=1;
G.arcs[7][4]=1;
}

bool tag[MaxVnum]; //标记一个点是不是已经被访问过了
void DFS(Graph G,int v)
{
tag[v] = true; //从V开始访问,tag它
cout << v << endl; //打印出V
for(int i = 0;i < G.vexnum;i++){
if(G.arcs[v][i] == 1 && tag[i] == false){//这里可以获得V未访问过的邻接点
DFS(G,i);//递归调用,如果所有节点都被访问过,就回溯,而不再调用这里的DFS
}
}
}

void DFSTraverse(Graph G){
for(v = 0;v < G.vexnum;v++){
tag[v] = false; //刚开始都没有被访问过
}
for(v = 0;v < G.vexnum;++v){
if(tag[v] == false) //从没有访问过的第一个元素来遍历图
DFS(G,v);
}
}

int main()
{
Graph G;
CreateGraph(G);
DFSTraverse(G);
return 0;
}

 

深度算法源程序

标签:第一个   out   struct   turn   pos   mat   [1]   string   ios   

原文地址:https://www.cnblogs.com/Chen-Programe/p/8496937.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!