基于邻接矩阵的无向图深度搜索。
#include<iostream>
#include<string>
#include<cmath>
#include<vector>
#include<set>
using namespace std;
void print(vector<int> v){
for(auto i = 0;i<v.size();i++){
cout<<v[i]<<endl;
}
cout<<"==============="<<endl;
}
void dfs(int arr[][5],int begin,vector<int> &path,set<int> &temp){
int size = 5;
bool find = false;
int j = 0;
for(;j<size;j++){
if(temp.find(j)!= temp.end())
continue;
if(arr[begin][j]!= 0){
find = true;
path.push_back(arr[begin][j]);
temp.insert(j);
dfs(arr,j,path,temp);
path.pop_back();
temp.erase(j);
}
}
if(!find){
print(path);
}
}
int main()
{
int arr[5][5];
for(int i = 0;i<5;i++)
for(int j = 0;j<5;j++)
{
arr[i][j]=0;
}
arr[0][1]=2;
arr[1][0]=2;
arr[0][2]=1;
arr[2][0]=1;
arr[1][3]=5;
arr[3][1]=5;
arr[1][4]=4;
arr[4][1]=4;
vector<int> path;
int size = 5;
for(int i = 0;i<size;i++){
set<int> temp;
temp.insert(i);
for(int j = 0;j<size;j++){
if(arr[i][j]!= 0){
path.push_back(arr[i][j]);
temp.insert(j);
dfs(arr,j,path,temp);
path.pop_back();
temp.erase(j);
}
}
}
}