确定用户可以到达地图的点数

时间:2012-11-17 17:26:41

标签: algorithm map points

如果我有这样定义的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个)位置,我该如何处理用户可以移动到哪个位置?

1 个答案:

答案 0 :(得分:2)

我会做以下(伪代码):

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

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