解题思路:代码比较简单,比较容易理解
void dfs(int cur){ cout<<cur<<" "; /*输出当前顶点*/ if(step==n) return; /*判断退条件*/ //遍历所有顶点 for(int i=0;i<n;i++){ if(map[cur][i]==1&&book[i]==0){ book[i]=1; dfs(i); /*从当前顶点出发*/ } } return; }
注意事项:
题目从0顶点出发,遍历所有顶点,建立邻接表
参考代码:
#include <iostream> using namespace std; int n,step; int map[101][101],book[101]; void dfs(int cur){ cout<<cur<<" "; //从第一个顶点开始输出 step++; //每访问一个顶点 if(step==n) return; //所有顶点都访问,则退出 for(int i=0;i<n;i++){ //从0顶点到n-1个顶点进行遍历 if(map[cur][i]==1&&book[i]==0){ book[i]=1; dfs(i); //从顶点i继续遍历 } } return; } int main(){ cin>>n; for(int i=0;i<n;i++) //建立邻接表 for(int j=0;j<n;j++) cin>>map[i][j]; book[0]=1; //顶点从0开始 dfs(0); //按题目的意思顶点最多为n-1,所以从0开始 cout<<endl; return 0; }
0.0分
6 人评分
C二级辅导-同因查找 (C语言代码)浏览:556 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:1435 |
多输入输出练习1 (C语言代码)浏览:1181 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:749 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:661 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:624 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:669 |
循环入门练习5 (C语言代码)浏览:837 |
2006年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:344 |
蛇行矩阵 (C语言代码)浏览:501 |