蓝桥-图3-深度优先遍历-地图最短路径

来源:互联网 发布:淘宝限时秒杀11元 编辑:程序博客网 时间:2024/05/16 01:38
package com.jkxy.photo;public class CityDeepTraverse {    static  int[][] e={{0,0,0,0,0,0},                        {0,0,2,99,99,10},                        {0,99,0,3,99,7},                        {0,4,99,0,4,99},                        {0,99,99,99,0,5},                        {0,99,99,3,99,0}};     static int book[]={0,0,0,0,0,0,0,0,0,0,0,0};     static int min=999999;    public static void main(String[] args) {      book[1]=1;      dfs(1,0);      System.out.println(min);    }    public static void dfs(int cur,int dis){        int j;        //if(dis>min) return;        if(cur==5){            if(dis<min) min=dis;            return;        }        for(j=1;j<=5;j++){            if(e[cur][j]!=99&&book[j]==0){                book[j]=1;                dfs(j,dis+e[cur][j]);                book[j]=0;            }        }        return;    }}//深度优先遍历-地图最短路径,前一参数为顶点,后一为总距离//(1,0)(2,2)(3,5)(4,9)(5,14)return回去(1,0)(2,2)(5,9)再return(1,0)(5,10)//首先定义图对应的二维数组//Main:标顶点1为已访问,从顶点1出发dfs(1,0),坐等dfs()跑完传过来总距离输出//dfs(cur,dis)判断边界:是否到终点5,到则把距离赋给min(当前路线距离比前距离近的话)//未到则循环(j从1到5)判断cur能否到j,可到则标j为已访,深挖j,取消标记,挖到底则return回去,继续循环判断。
0 0
原创粉丝点击