Chinaunix首页 | 论坛 | 博客
  • 博客访问: 127307
  • 博文数量: 49
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: -15
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-03 22:22
个人简介

小楼一夜听春雨

文章分类
文章存档

2017年(1)

2016年(2)

2015年(5)

2014年(21)

2013年(5)

2012年(7)

2010年(6)

2009年(2)

我的朋友

分类: Java

2010-10-31 23:17:31

// 图的深度优先搜索

public class DFSTest
{
   public static void main(String[] args)
   {
       int[][] graph={
        {0,1,1,0,0,0,0,0},
        {1,0,0,1,1,0,0,0},
        {1,0,0,0,0,1,1,0},
        {0,1,0,0,0,0,0,1},
        {0,1,0,0,0,0,0,1},
        {0,0,1,0,0,0,1,0},
        {0,0,1,0,0,1,0,0},
        {0,0,0,1,1,0,0,0},
       };
       int[] list;
       DFS dfs=new DFS();
       dfs.input(graph, 0);
       list=dfs.getList();
       for(int i=0; i<graph.length; i++){
           System.out.print(list[i]+" ");
       }
   }
}

class DFS
{
    int[][] graph;
    int[] list;
    
    int[] visited;
    int j;
    
    void input(int[][] graph, int v)
    {
        this.graph=graph;
        visited=new int[graph.length];
        list=new int[graph.length];
        for(int i: visited) i=0;
        j=0;
        calculate(v);
    }
    
    void calculate(int v)
    {
        visited[v]=1;
        list[j++]=v;
        for(int k=0; k<graph.length; k++){
            if(graph[v][k]==1 && visited[k]==0){
                calculate(k);
            }
        }
    }
    
    int[] getList()
    {
        return list;
    }
}


阅读(1583) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~