0

如果我有一个这样定义的 PHP 地图

$map = array(
    '0' => array('1','2','3','4'),
    '1' => array('0','5'),
    '2' => array('0','6'),
    '3' => array('0','7'),
    '4' => array('0','8'),
    '5' => array('1','9','10'),
    '6' => array('2','10','11'),
    '7' => array('3','11','12'),
    '8' => array('4','12','9'),
    '9' => array('8','5'),
    '10' => array('5','6'),
    '11' => array('6','7'),
    '12' => array('7','8'),
);

看起来像这样:

9-------5-------10
|       |       |
|       1       |
|       |       |
8---4---0---2---6
|       |       |
|       3       |
|       |       |
12------8-------11

现在,假设我在位置 1,我可以移动 4 个(并且正好是 4 个)位置,我该如何处理用户可以移动到哪些位置?

4

1 回答 1

2

我会做以下事情(在伪代码中):

reachable={1}
for i=0 to 4 (exclusive)
  newreachable={}
  for elem in reachable
    add map[elem] to newreachable
  reachable=newreachable

对于每次迭代,reachable包含可能出现的位置,并newreachable获取您可以移动到的每个位置。

于 2012-11-17T17:38:50.717 回答