码迷,mamicode.com
首页 > 其他好文 > 详细

286. Walls and Gates

时间:2016-07-02 10:21:02      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

    /*
     * 286. Walls and Gates
     * 2016-7-1 by Mingyang
     * 好吧,这道题目我们不需要想太多,就算题目标的是BFS,可是个人还是习惯做dfs
     * 基本的dfs不需要判断重复因为可以revisite
     */
     public void wallsAndGates(int[][] rooms) {
            for (int i = 0; i < rooms.length; i++)
                for (int j = 0; j < rooms[0].length; j++)
                    if (rooms[i][j] == 0) 
                        dfs(rooms, i, j, 0);
            }
           private void dfs(int[][] rooms, int i, int j, int d) {
              if (i < 0 || i >= rooms.length || j < 0 || j >= rooms[0].length || rooms[i][j] < d) 
                  return;
               rooms[i][j] = d;
   //这个地方写的妙,初学者会想d到底是不是最小的呢,其实在每个门向周围的时候辐射已经考虑到这个先后问题了
               dfs(rooms, i - 1, j, d + 1);
               dfs(rooms, i + 1, j, d + 1);
               dfs(rooms, i, j - 1, d + 1);
               dfs(rooms, i, j + 1, d + 1);
          }

 

286. Walls and Gates

标签:

原文地址:http://www.cnblogs.com/zmyvszk/p/5634777.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!