第十二周--项目4应用图的深度优先遍历思路求解问题 (5)

原创 2015年11月18日 20:37:45
*       
 * Copyright (c++) 2015 烟台大学计算机学院       
 * All right reserved.       
 * 文件名称:houzhui.cpp       
 * 作    者: 商文轲       
 * 完成日期:2015年10月日       
 * 版 本 号:v1.9        
 *       

*/          

5、输出通过一个节点的所有简单回路
问题:求图中通过某顶点k的所有简单回路(若存在)


#include <stdio.h>
#include <malloc.h>
#include "graph.h"
int visited[MAXV];       //全局变量
void DFSPath(ALGraph *G,int u,int v,int path[],int d)
//d是到当前为止已走过的路径长度,调用时初值为-1
{
    int w,i;
    ArcNode *p;
    visited[u]=1;
    d++;
    path[d]=u;
    p=G->adjlist[u].firstarc;   //p指向顶点u的第一条边
    while (p!=NULL)
    {
        w=p->adjvex;            //w为顶点u的相邻点
        if (w==v && d>0)        //找到一个回路,输出之
        {
            printf("  ");
            for (i=0; i<=d; i++)
                printf("%d ",path[i]);
            printf("%d \n",v);
        }
        if (visited[w]==0)          //w未访问,则递归访问之
            DFSPath(G,w,v,path,d);
        p=p->nextarc;       //找u的下一个邻接顶点
    }
    visited[u]=0;           //恢复环境:使该顶点可重新使用
}

void FindCyclePath(ALGraph *G,int k)
//输出经过顶点k的所有回路
{
    int path[MAXV],i;
    for (i=0; i<G->n; i++)
        visited[i]=0; //访问标志数组初始化
    printf("经过顶点%d的所有回路\n",k);
    DFSPath(G,k,k,path,-1);
    printf("\n");
}

int main()
{
    ALGraph *G;
    int A[5][5]=
    {
        {0,1,1,0,0},
        {0,0,1,0,0},
        {0,0,0,1,1},
        {0,0,0,0,1},
        {1,0,0,0,0}
    };  //请画出对应的有向图
    ArrayToList(A[0], 5, G);
    FindCyclePath(G, 0);
    return 0;
}


总结:求过一个点的所有回路,就是求始点和终点相同的简单回路,利用深度优先遍历思想。



背包问题解题思路

背包解题思路 背包问题大部分都是类似模样的状态转移方程dp[j]=dp[j]>(dp[j-t]+v)?dp[j]:(dp[j-t]+v); 普通类型的背包问题只需注意以下情况: 一、对于物品数量: 1...
  • zhulingyan1018
  • zhulingyan1018
  • 2015年10月18日 17:41
  • 1159

第十一周项目四 利用遍历思路求解图问题

1.是否有最短路径 /*  烟台大学 计算机与控制工程学院  文件名称:利用遍历思路求解图问题  作    者:胡德杰  完成日期:2017年12月14号  版 本 号:v1.1.38  ...
  • Hdj1597357
  • Hdj1597357
  • 2017年12月14日 11:22
  • 48

第十一周【项目4 - 利用遍历思想求解图问题】

Copyright(c) 2017,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:text.cpp 作者:黄潇慧 完成日期:2017年11月14日 ...
  • ff2333
  • ff2333
  • 2017年11月14日 20:51
  • 31

第十一周项目4 - 利用遍历思想求解图问题

【项目4 - 利用遍历思想求解图问题】        问题描述:假设图G采用邻接表存储,分别设计实现以下要求的算法,要求用区别于示例中的图进行多次测试,通过观察输出               ...
  • weixin_38414507
  • weixin_38414507
  • 2017年11月29日 11:23
  • 19

背包问题:另一种思路

这次对前面讲的两个背包问题:01背包问题和完全背包问题进行更深入的理解,下面来看思想吧。01背包问题:之前我们讲得思想很简单,每次只要求出从前i个物品中挑选出总重量不超过j的物品时总价值的最大值。既然...
  • restlessssh
  • restlessssh
  • 2016年04月28日 23:14
  • 684

【第十一周】项目4 - 利用遍历思想求解图问题

*Copyright (c)2017,烟台大学计算机与控制工程学院 *All rights reserved. *文...
  • ljj19971222
  • ljj19971222
  • 2017年11月30日 10:59
  • 28

第十一周项目4 - 利用遍历思想求解图问题

/*   *Copyright  (c)2017,烟台大学计算机与控制工程学院       *All rights reservrd.       *文件名称 :test.cpp       ...
  • qq_39838569
  • qq_39838569
  • 2017年12月12日 20:29
  • 28

第十一周项目4 - 利用遍历思想求解图问题

/*   *Copyright  (c)2017,烟台大学计算机与控制工程学院       *All rights reservrd.       *文件名称 :test.cpp  ...
  • panyanan7
  • panyanan7
  • 2017年12月15日 20:45
  • 21

第十一周项目4 - 利用遍历思想求解图问题

【项目4 - 利用遍历思想求解图问题】        问题描述:假设图G采用邻接表存储,分别设计实现以下要求的算法,要求用区别于示例中的图进行多次测试,通过观察输出                 ...
  • qq_39945464
  • qq_39945464
  • 2017年11月14日 17:33
  • 44

第十一周项目4 — 利用遍历思想求解图问题

Copyright (c) 2017, 烟台大学计算机学院   *All rights reserved.    *作    者:张行   *完成日期:2017年11月23日  ...
  • zh13573037996
  • zh13573037996
  • 2017年11月23日 10:59
  • 52
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第十二周--项目4应用图的深度优先遍历思路求解问题 (5)
举报原因:
原因补充:

(最多只允许输入30个字)