解题思路:代码比较简单,比较容易理解
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语言代码)不知道怎么直接在scanf中用枚举变量浏览:1316 |
简单的for循环浏览:1410 |
矩阵乘方 (C语言代码)浏览:1031 |
1048题解(读入回车问题)浏览:565 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:587 |
C二级辅导-计负均正 (C语言代码)浏览:482 |
C二级辅导-统计字符 (C语言代码)浏览:481 |
母牛的故事 (C语言代码)浏览:570 |
1162答案错误,为什么浏览:644 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:615 |