如何在网格中找到最小数量的开放矩形?

时间:2015-04-27 08:44:03

标签: lua a-star

我有一个10x10网格的4x4开放和关闭方格(抱歉,不能发布图片< 10个重复点)

local Open = □  
local Closed = ■

local grid = {

    1 ={■,□,■,□,□,■,■,□,□,□},
    2 ={■,□,□,□,■,■,■,■,■,■},
    3 ={□,■,■,■,■,■,□,□,□,□},
    4 ={■,□,■,■,■,□,□,□,□,■},
    5 ={□,□,□,□,□,■,■,■,□,■},
    6 ={□,□,□,□,□,■,■,■,□,■},
    7 ={■,■,□,■,■,□,■,■,□,□},
    8 ={□,□,■,■,□,■,■,□,□,■},
    9 ={□,■,□,□,□,■,■,■,■,□},
    10={□,□,□,■,■,□,■,■,□,□},

}

我有每个节点的Vector2位置,我使用了一些方法,但我似乎无法找到最有效的方法。我尝试循环遍历每一行并连接开放节点,这是有效的,但它没有尽可能高效。它需要通过X和Z坐标工作。

这是效率低下的伪代码:

GetCells = function(row1)
   local continuum = {}
   repeat
       for i = 1, #grid[row1] do
           local start = grid[row1][1]
           local s = {}
           if start == open then check right.
               if right == open then
                   start = right
                   etc...
                   table.insert(s, start)
               else
                   stop = true
               end
           end
           table.insert(continuum, s)
       end
   until stop == true
   return continuum
end

我还能继续这样做吗?

0 个答案:

没有答案