Algorithm 确定用户在地图上可以到达的点
如果我有这样定义的PHP映射Algorithm 确定用户在地图上可以到达的点,algorithm,map,points,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'
$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个)位置,我如何处理用户可以移动到的位置?我将执行以下操作(伪代码):
对于每个迭代,reachable
包含可能的位置,newreachable
获取可以移动到的每个位置。这听起来像BFS(广度优先搜索)。
reachable={1}
for i=0 to 4 (exclusive)
newreachable={}
for elem in reachable
add map[elem] to newreachable
reachable=newreachable