zoukankan      html  css  js  c++  java
  • 有向图 获取回路转

    import java.util.ArrayList;

    public class TESTHUAN {
    static private int[] visited = { 0, 0, 0, 0, 0, 0, 0 };// 7个节点,0为未访问
    static private int[][] e = { 
    { 0, 1, 1, 0, 0, 0, 0 }, 
    { 0, 0, 1, 1, 0, 0, 0 }, 
    { 1, 0, 0, 0, 0, 1, 0 }, 
    { 0, 0, 0, 0, 1, 0, 0 }, 
    { 0, 0, 0, 0, 0, 0, 0 }, 
    { 0, 0, 0, 0, 0, 0, 1 }, 
    { 1, 0, 0, 0, 0, 0, 0 } 
    };// 邻接矩阵,值大家任意改.
    static ArrayList trace = new ArrayList();// 从出发节点到当前节点的轨迹
    static boolean hasCycle = false;

    public static void main(String[] args) {
    findCycle(0);
    if (!hasCycle)
    System.out.println("No Cycle.");
    }

    static void findCycle(int v) // 递归DFS
    {
    if (visited[v] == 1) {
    int j;
    if ((j = trace.indexOf(v)) != -1) {
    hasCycle = true;
    System.out.print("Cycle:");
    while (j < trace.size()) {
    System.out.print(trace.get(j) + " ");
    j++;
    }
    System.out.print(" ");
    return;
    }
    return;
    }
    visited[v] = 1;
    trace.add(v);
    for (int i = 0; i < 7; i++) {
    if (e[v][i] == 1)
    findCycle(i);
    }
    trace.remove(trace.size() - 1);
    }
    }
  • 相关阅读:
    XML 命名空间
    XML Schema验证
    java 解析XML文档
    Java线程:创建与启动
    CCF-CSP 201312-5 I'm stuck !
    memset函数用法
    C++的字符串多行输入
    OS复习1
    os复习2
    javamail编程2
  • 原文地址:https://www.cnblogs.com/luckForever/p/7254228.html
Copyright © 2011-2022 走看看