死亡伯爵


私信TA

用户名:1124615130

访问量:19095

签 名:

Life is not what we have gained but what we have done.

等  级
排  名 889
经  验 3418
参赛次数 1
文章发表 33
年  龄 19
在职情况 学生
学  校 XiDianUniversity
专  业 ComputerScience

  自我简介:



参考代码:

#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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区