标签:int dfs 数据 return 实现 欧拉路径 i++ 进入 acm
实验数据:
int dege[5][5] = { { 0, 9 ,6,-1,-1}, {-1, 0, 4, 5,-1}, {-1,-1, 0,-1, 7}, { 3,-1,-1, 0,-1}, {-1,-1,-1, 8, 0} };
利用二维矩阵,存放图的信息,例如n个结点,那么图就是n*n大小,图分为有向图和无向图,在量化为矩阵的时候,区别就是一个是不对称的,无向是对称矩阵,然后用一个长度为n的一维矩阵存放,该节点是否被访问,由于未知该图的深度有多少,所以使用递归算法,在递归过程,通过标记矩阵判断该结点是否访问,未访问则进入下一层递归
int egde[5][5];//使用顶部的数据! int pre[5] = { 0 }, tag=0;//存放结点被第几个访问, void dfstag(int cur, int n) { pre[cur] = ++tag; //是否访问标记;第几个被访问; for (int i = 0; i < n; ++i) if (edge[cur][i]>0&&pre[i]==0) {//未被访问,则进入, dfstag(i, n); } } int main() { dfstag(0, 5); for (int i = 0; i < 5; i++) cout << " " << pre[i]; system("pause"); return 0; }
标签:int dfs 数据 return 实现 欧拉路径 i++ 进入 acm
原文地址:https://www.cnblogs.com/yidiandianwy/p/11564034.html