HTML/JavaScript小工具

HTML/JavaScript小工具

2016年6月24日 星期五

深度優先算法


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);  
    }
   
}

沒有留言:

張貼留言