参考代码:
#include<cstdio>
#include<stack>
using std::stack;
int map[50][50];//储存邻接矩阵
bool visited[50];//判断第n点是否已经访问过
void initialize(int num){//初始化,visited要初始化为false
for(int i=0;i<num;i++)
visited[i]=false;
for(int i=0;i<num;i++){
for(int j=0;j<num;j++)
scanf("%d",&map[i][j]);
}
}
void DFS(int num){
if(num==0)
return;
stack<int> S;
S.push(0);
visited[0]=true;
printf("0 ");
while(!S.empty()){
int temp=S.top();
int i;
for(i=0;i<num;i++)//遍历与temp相邻接的点
if(map[temp][i]==1&&visited[i]==false)break;//首先要有路,其次该点不能被访问过
if(i!=num){//有符合条件的点i,输出并入栈
printf("%d ",i);
visited[i]=true;
S.push(i);
}else{//没有符合条件的点,出栈
S.pop();
}
}
}
int main(){
int num;
scanf("%d",&num);
initialize(num);
DFS(num);
return 0;
}
0.0分
0 人评分
printf基础练习2 (C语言代码)浏览:943 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:377 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:751 |
数对 (C语言代码)浏览:703 |
简单的a+b (C语言代码)浏览:488 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:471 |
简单的a+b (C语言代码)浏览:830 |
简单的a+b (C语言代码)浏览:512 |
神奇的fans (C语言代码)浏览:989 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:676 |