zoukankan      html  css  js  c++  java
  • 深度和广度优先搜索

    #include<iostream>
    using namespace std;
    #define maxvex 100
    typedef struct
    {
        int a[maxvex][maxvex];
        int vex;
    }Graph;
    int visiteded[maxvex];
    void DFS(Graph G,int v)
    {
        printf("v%d ",v+1);
        visiteded[v]=1;
        for(int j=0;j<G.vex;j++)
            if(G.a[v][j]==1&&visiteded[j]==0)
                DFS(G,j);
    }
    void DFStravse(Graph G)
    {
        printf("深度优先遍历结果为: \n");
        for(int i=0;i<G.vex;i++)
            if(!visiteded[i])
                DFS(G,i);
    }
    int main()
    {
        memset(visiteded,0,sizeof(visiteded));
        int i,j;
        Graph G;
        printf("\n输入图中顶点数:");
        scanf("%d",&G.vex);
        printf("\n按行输入图的邻接矩阵:\n");
        for(i=0;i<G.vex;i++)
            for(j=0;j<G.vex;j++)
                scanf("%d",&G.a[i][j]);
            DFStravse(G);
            printf("\n");
        return 0;
    }
    /*
    输入图中顶点数:8
    
    按行输入图的邻接矩阵:
    0 1 1 0 0 0 0 0
    1 0 0 1 1 0 0 0
    1 0 0 0 0 1 1 0
    0 1 0 0 0 0 0 0
    0 1 0 0 0 0 0 1
    0 0 1 0 0 0 0 1
    0 0 1 0 0 0 0 0
    0 0 0 0 1 1 0 0
    深度优先遍历结果为:
    v1 v2 v4 v5 v8 v6 v3 v7
    Press any key to continue
    */
    /*#include<iostream>
    #include<queue>
    using namespace std;
    #define Maxvex 100
    typedef struct
    {
        int a[Maxvex][Maxvex];
        int n;
    }MGraph;
    int visited[Maxvex];
    void BFSM(MGraph *G,int k)
    {
        int j;
        queue <int> Q;
        printf("广度优先遍历结点:结点v%d\n",k+1);
            visited[k]=1;
        Q.push(k);
        while(!Q.empty())
        {
            k=Q.front();
            Q.pop();
            for(j=0;j<G->n;j++)
                if(G->a[k][j]==1&&visited[j]==0)
                {
                    printf("广度优先遍历结点:结点v%d\n",j+1);
                        visited[j]=true;
                    Q.push(j);
                }
        }
    }
    void BFSTraveseM(MGraph *G)
    {
        int i=0;
        for(i=0;i<G->n;i++)
           if(!visited[i])
                BFSM(G,i);
    }
    int main()
    {
        MGraph *G=new MGraph;
        memset(visited,0,sizeof(visited));
        printf("\n请输入图中顶点个数:\n");
        scanf("%d",&(G->n));
        printf("\n按行输入图的邻接矩阵:\n");
        for(int i=0;i<G->n;i++)
            for(int j=0;j<G->n;j++)
                scanf("%d",&G->a[i][j]);
            BFSTraveseM(G);
        return 0;
    }*/
    /*
    
    请输入图中顶点个数:
    8
    
    按行输入图的邻接矩阵:
    0 1 1 0 0 0 0 0
    1 0 0 1 1 0 0 0
    1 0 0 0 0 1 1 0
    0 1 0 0 0 0 0 0
    0 1 0 0 0 0 0 1
    0 0 1 0 0 0 0 1
    0 0 1 0 0 0 0 0
    0 0 0 0 1 1 0 0
    广度优先遍历结点:结点v1
    广度优先遍历结点:结点v2
    广度优先遍历结点:结点v3
    广度优先遍历结点:结点v4
    广度优先遍历结点:结点v5
    广度优先遍历结点:结点v6
    广度优先遍历结点:结点v7
    广度优先遍历结点:结点v8
    Press any key to continue*/
  • 相关阅读:
    WPF DelegateCommand 出现Specified cast is not valid
    WPF DelegateCommand 出现Specified cast is not valid
    WPF DelegateCommand 出现Specified cast is not valid
    win10 sdk 是否向下兼容
    win10 sdk 是否向下兼容
    win10 sdk 是否向下兼容
    PHP extract() 函数
    PHP end() 函数
    PHP each() 函数
    PHP current() 函数
  • 原文地址:https://www.cnblogs.com/heqinghui/p/2752115.html
Copyright © 2011-2022 走看看