原创
寻求图中最短路径的方法有很多,最近刚开始学习,先用深搜实现,用邻接矩阵来存储图。
直接上图上代码:
寻求从0~4的最短路径
利用深搜找出所有从0~4的路径,一一比较选择出最小的
import java.util.*;
public class 城市地图 {
static int v; //顶点
static int e; //边
static int matrix[][]; //邻接矩阵
static int book[]; //标记
static int min=99999;
static void dfs(int point,int distinct) {
if(distinct>min) {
return;
}
if(point==v-1) { //目标点是v-1
if(distinct
min=distinct;
return;
}
}
for(int i=0;i
if(matrix[point][i]>0 && matrix[point][i]<99999 && book[i]==0) {
book[i]=1;
dfs(i,distinct+matrix[point][i]);
book[i]=0; //回溯
}
}
return;
}
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
v=reader.nextInt();
e=reader.nextInt();
matrix=new int[v][v];
book=new int[v];
//矩阵初始化
for(int i=0;i
book[i]=0;
for(int j=0;j
if(i==j) {
matrix[i][j]=0;
}
else {
matrix[i][j]=99999;
}
}
}
//读入边
for(int i=0;i
int first=reader.nextInt();
int second=reader.nextInt();
int dis=reader.nextInt();
matrix[first][second]=dis; //有向图
}
book[0]=1; //起始点是0
dfs(0,0);
System.out.println(min);
}
}
测试数据:
输入:
5 8
0 1 2
0 4 10
1 2 3
1 4 7
2 0 4
2 3 4
3 4 5
4 2 3
输出:9
无向图代码:
import java.util.*;
public class 城市地图_无向 {
static int v;
static int e;
static int matrix[][];
static int book[];
static int min=99999;
static void dfs(int point,int dis) {
if(dis>min) {
return;
}
if(point==v-1) { //到达目的地
if(dis
min=dis;
}
return;
}
for(int i=0;i
if(matrix[point][i]>0 && matrix[point][i]<99999 && book[i]==0) {
book[i]=1;
dfs(i,dis+matrix[point][i]);
book[i]=0; //回溯
}
}
}
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
v=reader.nextInt();
e=reader.nextInt();
matrix=new int[v][v];
book=new int[v];
//矩阵初始化
for(int i=0;i
book[i]=0;
for(int j=0;j
if(i==j) {
matrix[i][j]=0;
}
else {
matrix[i][j]=99999;
}
}
}
//读入边
for(int i=0;i
int edge_One=reader.nextInt();
int edge_Two=reader.nextInt();
int value=reader.nextInt();
matrix[edge_One][edge_Two]=value; //无向图
matrix[edge_Two][edge_One]=value;
}
book[0]=1;
dfs(0,0);
System.out.println(min);
}
}
测试用例:
输入:
5 8
0 1 2
0 4 10
1 2 3
1 4 7
2 0 4
2 3 4
3 4 5
4 2 3
输出:7
23:40:24
2018-07-23
希望与广大网友互动??
点此进行留言吧!