package 演算法;
public class 深度優先算法_2 {
/*
1 表示可連接的線
0 表示自己
999 表示無法連線
邏輯如下:
1 先找到一個點
2 看看跟哪個點有連線
3 在進到有連線的點
4 依照路徑一層一層找
*/
public static int[][] myTree = { {0,1,1,999,1},
{1,0,999,1,999},
{1,999,0,999,1},
{999,1,999,0,999},
{1,999,1,999,0} };
static int sum = 0;
static int[] mark = new int[myTree.length];//記錄哪些點走過,不需要再走了
public static void dfs(int point){
System.out.println(point);//目前在哪個點
sum++;//記錄一共走了多少點
if (sum == myTree.length){
return;
}
for (int i = 0 ; i < myTree.length; i++){
if (mark[i] == 0 && myTree[point][i] == 1){
mark[i] = 1;
dfs(i);
}
}
}
public static void main(String[] args) {
mark[0] = 1;
dfs(0);
}
}
沒有留言:
張貼留言