解题思路:代码比较简单,比较容易理解
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语言程序设计教程(第三版)课后习题8.9 (C++代码)(其实不需要开数组,一个一个字符读入并判断就好了)浏览:939 |
C二级辅导-同因查找 (C语言代码)浏览:590 |
十->二进制转换 (C++代码)(零和负数需要特殊处理)浏览:1135 |
C语言训练-字符串正反连接 (C语言代码)浏览:664 |
不容易系列2 (C语言代码)浏览:641 |
简单的a+b (C语言代码)浏览:600 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:606 |
本人酷爱递归实现很多问题,这里也是浏览:632 |
DNA (C语言描述,数据结构)浏览:909 |
1011题解浏览:819 |