DFS:
设置出口: count==n
找邻接点为通路
递归DFS i
源码:
#include <iostream>
#include <cstdlib>
using namespace std;
/*
注意 遇到不连通的图 (类似森林的图) 要加一个DFStravel函数 因为会遍历不到另一个连通块
从这个函数开始 而不是DFS函数
void DFSTravel()
{
for(所有顶点)
if(!vis)
DFS()
}
*/
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int map[5][5]={
{0,1,0,1,0},
{1,0,1,0,1},
{0,1,0,0,0},
{1,0,0,0,0},
{0,1,0,0,0}
};
bool bmap[5];
int foot[5];
int count=0;
void dfs(int key){
foot[count++]=key;
if(count==5){
exit(0);
}
bmap[key]=true;
for(int i=0;i<5;i++){
if(bmap[i]==false && map[key][i]==1){
cout<<i+1<<endl;
dfs(i);
}
}
}
int main(int argc, char *argv[]) {
dfs(2); //从零开始 所以这个应该是实际的3
for(int i=0;i<5;i++){
cout<<foot[i]<<"-";
}
cout<<endl;
return 0;
}