zoukankan      html  css  js  c++  java
  • 求有向图中两点间所有路径

    public class GraphPath {
    //有向带权图。-1表示无路可通。自己到自己也是-1。其它表示权值。
        private static int[][] graph=
        {
            {-1,2,3,3},//表示 0点到0点不连通;0点到1点连通,权值2;0点到2点连通,权值3,0点到3点连通,权值3
            {-1,-1,-1,2},
            {-1,2,-1,3},
            {-1,-1,-1,-1}       
        };
        private static boolean[] hasFlag=new boolean[graph.length];
        //true-表示该结点已访问过。false-表示还没有访问过。
         
        private static ArrayList res=new ArrayList();
        //最后的所有的路径的结果。每一条路径的格式是如:0->2->1->3:7
         
        //求在图graph上源点s到目标点d之间所有的简单路径,并求出路径的和。   
        public static void getPaths(int s,int d,String path,int sum)
        {
            hasFlag[s]=true;//源点已访问过. 
         for(int i=0;i
         {
            if (graph[s][i]==-1 || hasFlag[i]){continue;}
            //若无路可通或已访问过,则找下一个结点。
     
            if(i==d)//若已找到一条路径
           
                res.add(path+"->"+d+":"+(sum+graph[s][i]));//加入结果。
                continue;
            }
            getPaths(i, d, path+"->"+i, sum+graph[s][i]);//继续找
            hasFlag[i]=false;       
         }//for(i)
        }
          
        public static void main(String[] args) {
            // TODO Auto-generated method stub
          getPaths(0, 3, ""+0, 0);//从源点:0 到目点:3,初始路径:"0" 初始和:0
          for(String e:res)//打印所有的结果
          {
              System.out.println(e);
          }
        }
    }

  • 相关阅读:
    Flask 路由映射对于双斜线的处理 //a//b
    python中的导入如何使用,以及.和..相对导入的使用
    tornado 启动WSGI应用(Flask)使用多线程将同步代码变成异步
    flask的请求处理流程和异常处理流程
    pyengine介绍及使用
    __import__
    如何为自己的pip包打造可以执行的系统命令
    JS进阶之原型
    JS基础之对象
    CSS之深入探究Position
  • 原文地址:https://www.cnblogs.com/luckForever/p/7254237.html
Copyright © 2011-2022 走看看