gpt4 book ai didi

php - 数组PHP中的迭代加深深度优先搜索

转载 作者:可可西里 更新时间:2023-10-31 23:50:09 25 4
gpt4 key购买 nike

是否可以在 PHP 中使用级别数组实现 IDDFS 算法?

假设下面的树:

    A
/ \
B C
/ \ \
D E F

调用 getNodes(A) 会产生 Array(B, C),同样 getNodes(B) 会产生 Array(D, E)。我已经编写了 getNodes 函数,将其与不幸太慢的 BFS 算法一起使用。

代码格式化表单注释:

function bfs($start,$target){
$dist = 0;

if(empty($queue)){
$queue = array();
};

if(empty($checked)){
$checked = array();
};

array_push($queue, $start);
while(!empty($queue)):
$dist = $dist + 1;
$newqueue = array();

foreach($queue as $node){
if(!in_array($node,$checked)){
array_push($checked,$node);
$nodes=getNodes($node);
if(checkNode($nodes,$target)){
return $dist;
}else{
$newqueue=$nodes;
}
}
$queue = $newqueue;
}
endwhile;

return false;
}

最佳答案

从递归的角度来看,执行此操作的函数可能如下所示:

<?php

function getNode($needle, $target) {

$res = null;
foreach($target as $key=>$val) {

if($key === $needle) {
$res = $target[$key];
break;
}
elseif(is_array($target[$key]))
$res = getNode($needle, $target[$key]);
}
return $res;
}

测试:

$arr = array(
'a' => array(
'b' => array(
'water'
),
'c' => array(
'earth'
)
)
);

var_dump(getNode('a', $arr));

关于php - 数组PHP中的迭代加深深度优先搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7135045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com