作者yauhh (哟)
看板Prob_Solve
标题Re: [请益] 踩地雷的踩空处理
时间Fri Sep 28 08:40:13 2012
※ 引述《EdisonX (闭上眼的鱼)》之铭言:
: (3) 关键在於 M$ 点到 0 的时候会自动再往外爆开,但这个怎麽做?
: 目前想法是,当遇到 0 的时候,开启後,以 bfs 方向继续往四个方向搜寻,
: 搜寻到非零的时候就停下来,
从一格往四方向搜寻一定会重覆, 造成递回的困难, 应该要避开重覆.
像以下例子,先呼叫 expand_h(array, i, j) 然後 expand_w(array, i, j)
就可以安全结束.
function expand_h ( array[][], i, j )
if array[i][j] =/= 0 exit function
show(array[i][j])
expand1(array, i-1, j, "up")
expand1(array, i+1, j, "down")
expand_h(array, i, j-1)
expand_h(array, i, j+1)
function expand_w (array[][], i, j)
if array[i][j] =/= 0 exit function
show(aray[i][j])
expand1(array, i, j-1, "left")
expand1(array, i, j+1, "right")
expand_w(array, i-1, j)
expand_w(array, i+1, j)
function expand1 ( array[][], i, j , direction )
if array[i][j] =/= 0 exit function
show(array[i][j])
case direction of
"up": expand1 ( array, i-1, j, direction)
"down": expand1 (array, i+1, j, direction)
"left": expand1 (array, i, j-1, direction)
"right": expand1 ( array, i, j+1, direction)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.167.50.85
1F:推 EdisonX:您说的缺点确实我没考虑,不过您的code我想半天还在想 orz 09/28 17:16
2F:→ yauhh:没时间,所以乱写一堆pseudo code 09/28 19:49
3F:→ suhorng:不会重复造成困难 原原PO的code有标记 09/28 22:00